Dynamically include JavaScript from external file - PHP - javascript

Thanks in advance for your help. I am having a hard time keeping my codebase clean. I want to avoid intermixing PHP, HTML, and CSS.
Currently, my main site is broken down into numerous smaller tabs. The PHP code for these tabs is dynamically included after an ajax call is made.
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
}
It works great but I would also like to dynamically include JavaScript from an external file. In my mind it would work like this,
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
include 'templates/custom/'.$center."/".$section."/".$tab.".js";
}
How can I dynamically include javascript based on what tab the user wants to go to while still keeping the javascript separated by tab in individual files.
I have spent the entire day looking into this issue and keep coming across examples that look like this,
echo "<script language='javascript' type='text/javascript'>";
echo "alert('hello worldio');";
echo "</script>";
$URL="page.php";
echo "<script>location.href='$URL'</script>";
This site is a single page application. THanks again!

Just print the <script> tag to include it:
print '<script src="templates/custom/'.$center.'/'.$section.'/'.$tab.'.js'" type="text/javascript"></script>';

Javascript files cannot be included by php function. Use the below code
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
$file_path = "javascript external file path"; // replace with correct file path
?>
<script language="JavaScript" type="text/javascript" src="<?php echo $file_path;?>"></script>
<?php } ?>

hi in my case i use module base template that seprated to smaller parts.i have 3 main UI part in my site
1.public site js for all templates jquery,bootstrap ,... that use in all templates must put here
2.each style or template has a js folder that all public js file of this templates must be there
3.each module in template has js folder that js special for that module must be there
i do it for css too.in fact when i load a module check all of this folders by
array_slice(scandir($st_css_style_public_path), 2)
and create css link or js script and print final string of addresses in my page.
but some times you need to inject a peace of code directly into your page i use a folder and a file with name of plugins->plugins.php put all piece of script there get it's content and print it into my page
`$st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';
all of my render method in my view is this :
public function render($address, $data = '', $cache = 1, $showstyle = 1) {
$data['LINKPREFIX'] = '/' . $this->current_holding_unique_name
. '/'
. $this->current_lang;
if (isset($address)) {
$path = explode('/', $address);
$path[0] = $path[0];
$path[1] = $path[1];
}
$template = $this->twig->loadTemplate($path[0] . DS . $path[1] . '.twig');
if ($showstyle) {
$css_links = '';
$js_links = '';
$st_plugins = '';
//##################################################
//########################## CREATING CSS,JS ADDRESS
//##################################################
//####### SITE PUBLIC CSS & JS FILES
$st_js_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'js';
$st_css_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'css';
if (file_exists($st_js_public_path) && is_dir($st_js_public_path)) {
$ar_public_jsfile_list = array_slice(scandir($st_js_public_path), 2);
foreach ($ar_public_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_public_path . DS . $js_file_name, 'js');
}
}
if (file_exists($st_css_public_path) && is_dir($st_css_public_path)) {
$ar_public_cssfile_list = array_slice(scandir($st_css_public_path), 2);
foreach ($ar_public_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_public_path . DS . $css_file_name, 'css');
}
}
//####### STYLE PUBLIC CSS & JS & PLUGINS FILES
$st_js_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'js';
$st_css_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'css';
$st_plugin_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
if (file_exists($st_css_style_public_path) && is_dir($st_css_style_public_path)) {
$ar_cssfile_list = array_slice(scandir($st_css_style_public_path), 2);
foreach ($ar_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_style_public_path . DS . $css_file_name, 'css');
}
}
if (file_exists($st_js_style_public_path) && is_dir($st_js_style_public_path)) {
$ar_jsfile_list = array_slice(scandir($st_js_style_public_path), 2);
foreach ($ar_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_style_public_path . DS . $js_file_name, 'js');
}
}
$st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';
//####### MODULE CSS & JS FILES
$st_js_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'js';
$st_css_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'css';
$st_plugin_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
if (file_exists($st_css_style_path) && is_dir($st_css_style_path)) {
$ar_cssfile_list = array_slice(scandir($st_css_style_path), 2);
foreach ($ar_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_style_path . DS . $css_file_name, 'css');
}
}
if (file_exists($st_js_style_path) && is_dir($st_js_style_path)) {
$ar_jsfile_list = array_slice(scandir($st_js_style_path), 2);
foreach ($ar_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_style_path . DS . $js_file_name, 'js');
}
}
$st_plugins .= (file_exists($st_plugin_path) && $showstyle ) ? file_get_contents($st_plugin_path) : ' ';
//################################################
//################################################
//################################################
//################################################
//# # # CREATING CSS,JS ADDRESS
$data['VARCSSADDR'] = $css_links;
$data['VARJSADDR'] = $js_links . $st_plugins;
$data['VARURL'] = '/';
$data = array_merge($data, lang_translate::$lang);
$template->display($data);
} else {
//$ar_langpropr = language::$ar_lanuage[session::get('current_lang')];
//$data['lang_code'] = $ar_langpropr['lang_code'];
$data = array_merge($data, lang_translate::$lang);
return $this->twig->render($address . '.twig', $data);
}
}
i am using twig template engine so there are some unrelated code to your question here;else part is for ajax call.
conclusion:
1-you can use this structure to add or delete file from a module as easy as copy or delete a file from it's folder.
2- you can use it to create correct js or css to create address by ajax and print it in your code
i hope it helped you and don't hesitate to as more question if you need

PHP include()'s are server-side.
JavaScript is client-side.
Therefore, you cannot use include() on a JavaScript.
However, if you would like to load a JavaScript with a URL that you want, use this:
$url = "JAVASCRIPT URL HERE";
echo('<script src="'. $url .'"></script>');

Related

php variable pass to javascript using getJSON()

i want to pass a php variable to javascript
on php(getStatus.php) i'm using json_encode like this
$resultFin = array();
if (strpos($status,'Scan is complete') === true){
$resultFin[] = 1;
}
else{
$resultFin[] = 0;
}
echo json_encode($resultFin);
echo "$status";
and i want get resultFin value on javascript so i wrote below code
echo '<script type="text/javascript">
$(document).ready(function() {
$.post("scanner/getStatus.php", {testId:' . "$testId" . ',chkCnt:' . "$chkCount" . ',rxss:' . "$rxss" . ',sxss:' . "$sxss" . ',sqli:' . "$sqli" . ',basqli:' . "$basqli" . ',autoc:' . "$autoc" . ',idor:' . "$idor" . ',dirlist:' . "$dirlist" . ',bannerdis:' . "$bannerdis" . ',sslcert:' . "$sslcert" . ',unredir:' . "$unredir" . ',clamav:' . "$clamav" . '}, function(data){$("#status").html(data)});
var refreshId = setInterval(function() {
$.post("scanner/getStatus.php", {testId:' . "$testId" . ',chkCnt:' . "$chkCount" . ',rxss:' . "$rxss" . ',sxss:' . "$sxss" . ',sqli:' . "$sqli" . ',basqli:' . "$basqli" . ',autoc:' . "$autoc" . ',idor:' . "$idor" . ',dirlist:' . "$dirlist" . ',bannerdis:' . "$bannerdis" . ',sslcert:' . "$sslcert" . ',unredir:' . "$unredir" . ',clamav:' . "$clamav" . '}, function(data){$("#status").html(data)});
console.log("dfdfdf");
$.getJSON("scanner/getStatus.php", function(data){
var fini;
fini = data;
console.log(fini);
if( fini == 1){
clearInterval(refreshId);
}
});
}, 500);
$.ajaxSetup({ cache: false });
});</script>';
i have checked it using brakepoint console.log("dfdfd");
but not getting into getJSON method and don't get resultFin value
how to fix this code?
i want resultFin value using in javascript
Your getStatus.php should look like:
$resultFin = array();
if (strpos($status,'Scan is complete') === true){
$resultFin['scan_completed'] = true;
}
else{
$resultFin['scan_completed'] = false;
}
echo json_encode($resultFin);
So on frontend you can use fini.scan_completed which will be true or false.

How to link Javascript files to HTML recursively

I'm trying to recursively link some Javascript files in a directory into a HTML page:
<?php
$dir = '/opt/lampp/htdocs/my_project/js';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::SELF_FIRST );
foreach ( $iterator as $path ) {
if ($path->isDir()) {
print('dir >>> ' . $path->__toString() . PHP_EOL . '\n');
} else {
print($path->__toString() . PHP_EOL . '\n\n\n');
echo("<script src='$path->__toString() . PHP_EOL>\</script>");
}
}
?>
This, however, doesn't seem to work. How can I go about adding all the files in the directory and sub-directories recursively? Any working recursive approach will do. It doesn't have to be the way I'm trying it above.
Thank you all in advance.
Try changing your foreach block to below code and see if that helps?
foreach ( $iterator as $path ) {
if ($path->isDir()) {
print('dir >>> ' . $path . PHP_EOL);
} else {
print($path . PHP_EOL);
echo("<script src='$path'></script>".PHP_EOL);
}
}
The issue was with the syntax of "<script src='$path->__toString() . PHP_EOL>\</script>" changing this line to "<script src='$path'></script>" will help.

How to change js code to php

Currently I am learning Php. For an Ebay shop I try to get my page free of JS and to switch to pure CSS via PHP.
For this I have so far a backend, into which I enter my links and texts. These are stored in my menu.js.
$remote_directory = UPLOAD_PATH;
$renaming_file = $remote_directory . '/js/menu.js';
$renaming_file_to = $remote_directory . '/js/menu.old';
$_remc = new Admin_Remote_Copy(ADMIN_UPLOAD_SERVER_HOST, ADMIN_UPLOAD_USER_NAME, ADMIN_UPLOAD_PASSWORD, ADMIN_UPLOAD_SSH_PORT);
$_remc->remote_copy($renaming_file, $renaming_file_to);
if ($_remc->remote_is_writeable($renaming_file)) {
$menu_string = "document.getElementById('categories_menu').innerHTML='";
for ($z = 0; $z < count($_POST['menu_lvl1_text']); $z++) {
$menu_string .= '<li>' . htmlentities($_POST['menu_lvl1_text'][$z], ENT_QUOTES, "UTF-8") . '';
if (isset($_POST['menu' . $z . '_lvl2_text']) && !empty($_POST['menu' . $z . '_lvl2_text'])) {
$menu_string .= '<ul>';
for ($zs = 0; $zs < count($_POST['menu' . $z . '_lvl2_text']); $zs++) {
$menu_string .= '<li>' . htmlentities($_POST['menu' . $z . '_lvl2_text'][$zs], ENT_QUOTES, "UTF-8") . '';
}
$menu_string .= '</ul>';
}
$menu_string .= '</li>';
}
$menu_string .= "';";
$_remc->remote_content_copy($renaming_file, $menu_string);
$local_renaming_file = ADMIN_LOCAL_PATH . '/js/menu.js';
$_remc->local_content_copy($local_renaming_file, $menu_string);
} else {
$file_error = true;
}
Now I had thought to pass these values ​​into an array and save it via JSON PrittyPrint. However, I have no idea at all how to build this array.
My idea is to build a navigation with fixed IDs and fill it with the JSON file.
In the latter I see no problems, but the array is not clear to me.
Let's assume that array would look something like this:
$m =array(
"10100" => array('menu_lvl1_text' => 'menu_lvl1_link'),
"10101" => array('menu_lvl2_text' => 'menu_lvl2_link'),
"10102" => array('menu_lvl2_text' => 'menu_lvl2_link'),
"10103" => array('menu_lvl2_text' => 'menu_lvl2_link')
);
Am I on the wrong path?
And how does my array know that it is to assign value 1 to ID 10000?
Thanks,
Patrick
I think that you forgot to open a folder first! You can use some php functions like opendir at first then get or create a new file there.

how to convert php script to javascript

we have construct the one secret URL for my application.i have PHP script how to change java script any one help me to solve the issue
Below mentioned script how to change java script in c# application
i have php script this to change javascript
<html>
<title>Live</title>
<head>
<script src="http://content.jwplatform.com/libraries/Y09dkRGs.js"></script>
<script>jwplayer.key = "ti8UU55KNdJCPX+oWrJhLJNjkZYGiX13KS7yhlM7Ok/wmU3R";</script>
</head>
<body>
<?php
function bg_gen_secure_uri($file, $directory, $secret, $expiry=0, $allowed_countries='',
$disallowed_countries='', $allowed_ip='', $allowed_useragent='',
$allowed_metros='', $disallowed_metros='',
$progressive_start='', $progressive_end='',
$extra_params='') {
if ($file==''||$secret=='') {
return false;
}
// Construct the values for the MD5 salt ...
if (substr($expiry,0,1)=='=') {
$timestamp=substr($expiry,1);
} else if ($expiry > 0) {
$now=time(); // use UTC time since the server does
$timestamp=$now+$expiry;
} else {
$timestamp=0;
}
if ($allowed_countries) {
$allowed_countries='&a='.$allowed_countries;
}
if ($disallowed_countries) {
$disallowed_countries='&d='.$disallowed_countries;
}
if ($allowed_ip) {
$allowed_ip='&i='.$allowed_ip;
}
if ($allowed_useragent) {
$allowed_useragent='&u='.$allowed_useragent;
}
if ($progressive_start!='') {
$progressive_start='&start='.$progressive_start;
}
if ($progressive_end) {
$progressive_end='&end='.$progressive_end;
}
if ($allowed_metros) {
$allowed_metros='&am='.$allowed_metros;
}
if ($disallowed_metros) {
$disallowed_metros='&dm='.$disallowed_metros;
}
if ($extra_params) {
$extra_params=urldecode($extra_params);
}
// Generate the MD5 salt ...
if ($directory == '') {
$salt = $secret . $file . '?e=' . $timestamp . $allowed_countries .
$disallowed_countries . $allowed_metros . $disallowed_metros . $allowed_ip .
$allowed_useragent . $progressive_start . $progressive_end;
} else {
$salt = $secret . $directory . '?e=' . $timestamp . $allowed_countries .
$disallowed_countries . $allowed_metros . $disallowed_metros . $allowed_ip .
$allowed_useragent . $progressive_start . $progressive_end;
}
// Generate the MD5 hash ...
$hash_code = md5($salt);
// Generate the link ...
$url = $file . '?e=' . $timestamp . $allowed_countries . $disallowed_countries .
$allowed_metros . $disallowed_metros . $allowed_ip . $allowed_useragent .
$progressive_start . $progressive_end . '&h=' . $hash_code . $extra_params;
return $url;
}
function get_secure_url($file,$directory,$secret) {
$expiry=3600;
$allowed_countries='';
$disallowed_countries='';
$allowed_ip='';
$allowed_useragent='';
$allowed_metros='';
$disallowed_metros='';
$progressive_start='';
$progressive_end='';
$extra_params='&bgsecuredir=1';
return bg_gen_secure_uri($file, $directory, $secret, $expiry, $allowed_countries, $disallowed_countries, $allowed_ip, $allowed_useragent, $allowed_metros, $disallowed_metros, $progressive_start, $progressive_end, $extra_params);
}
$url = 'http://tv.live-s.cdn.bitgravity.com/cdn-live/_definst_/tv'.get_secure_url('/secure/live/tv/playlist.m3u8','/tv/secure/','kkkfdashfsdiads');
?>
<div>
<div id="player">
<div id="myElement"> </div>
<script type="text/javascript">
jwplayer("myElement").setup({
file: '<?=$url?>',
width: '100%',
aspectratio: '16:9',
stretching:'exactfit',
autostart: false,
androidhls: true,
skin: 'vapor',
primary: 'html5'
});
</script>
</div>
</div>
Install Composer from http://getcomposer.org/
Add the "base-reality/php-to-javascript": ">=0.0.3" to your project's
composer.json file:
"require":{ "base-reality/php-to-javascript": "0.1.16" }
Or the latest tagged version. The dev master should only be used for
development, not production.\
Include the Composer SPL autoload file in your project:
require_once('../vendor/autoload.php');
Call the converter:
$phpToJavascript = new PHPToJavascript\PHPToJavascript();
$phpToJavascript->addFromFile($inputFilename); $jsOutput =
$phpToJavascript->toJavascript();
$jsOutput will now contain an auto-generated Javascript version of
the PHP source file.
Hope this helps!
Thanks
You can convert PHP syntax to JS with https://gitlab.com/kornelski/babel-preset-php

php javascript autopopulated image gallery

I get the error message syntax error missing ; before statement at "var galleryarray=new Array();" . "\n"; here is the php code
function returnimages($dirname=".") {
$pattern="\.(jpg|jpeg|png|gif|bmp)$";
$files = array();$curimage=0;
if($handle = opendir($dirname)) {
while(false !== ($file = readdir($handle))){
if(eregi($pattern, $file)){
echo 'galleryarray[' . $curimage .']=["' . $file . '"];' . "\n";
$curimage++;
}
}
closedir($handle);
}
return($files);
}
echo "var galleryarray=new Array();" . "\n";
returnimages();
and here is the javascript:
var galleryarray=new Array();
var curimg=0
function rotateimages(){
document.getElementById("slideshow").setAttribute("src", "slideshow_images/"+galleryarray[curimg])
curimg=(curimg<galleryarray.length-1)? curimg+1 : 0
}
window.onload=function(){
setInterval("rotateimages()", 2500)
}
i just don't see my mistake any help with this problem would be appreciated
klein
Replace your below line:
echo "var galleryarray=new Array();" . "\n";
with the following line:
echo "<script>var galleryarray=new Array();</script>";
You are adding a JS code without script tag so you need to add this tag.
EDITED:
echo 'galleryarray[' . $curimage .']=["' . $file . '"];' . "\n";
You also have error in the above line replace it with the below line:
echo '<script>galleryarray["' . $curimage .'"]=["' . $file . '"];</script>';

Categories