How to access php SESSION variable in javascript [duplicate] - javascript

This question already has answers here:
Pass a return value from php to js
(1 answer)
How to access php session in javascript file?
(4 answers)
Closed 6 years ago.
I'm trying to create an image uploading website. In this, when a user logs in, I set a $_SESSION['id'] variable in php. Now, I wish to check if $_SESSION['id'] is set in my javascript file (general.js) in order to carry out certain functions. How should I go about doing it?

<?php $session_value=(isset($_SESSION['id']))?$_SESSION['id']:''; ?>
<html>
<head>
<script type="text/javascript">
var myvar='<?php echo $session_value;?>';
</script>
<script type="text/javascript" src="general.js"></script>
</head>
<body>
</body>
</html>
In above code snippet I have initialized global variable myvar with value stored into php session variable into script file before general.js file is referenced in script.It will be accessible in general.js file

A simple example please try this
<?php
session_start();
$_SESSION['id'] = 12;
?>
<script>
alert(<?php echo $_SESSION['id']; ?>);
</script>
You can even use php variable and array as variable in js like below
<?php
$id= $_SESSION['id'];
$data= array('one', 'two', 'three');
?>
<script type="text/javascript">
var idr = '<?php echo $id; ?>';
var datar = <?php echo json_encode($data); ?>;
</script>

Here PHP is server-Side execution and JavaScript is Client side execution. and $_SESSION is a server-side construct.So probably you can not access that directly using JavaScript You would need to store that variable in $_COOKIE to be able to access it client-side.
You can get that Session using PHP, and then use that for the JavaScript like this
<?php
$variablephp = $_SESSION['category'];
?>
<script>
var variablejs = "<?php echo $variablephp; ?>" ;
alert("category = " + variablejs);
</script>
Here you are getting Session like echo $variablephp using PHP, and the assign that value to JavaScript variable.

The best way is to echo the session ID in a javascript variable.
<script>
var sessionId = "<?php echo $_SESSION['id']; ?>";
// Your javascript code goes here
</script>

Related

PHP Pass Variable to new Window.Open Javascript

I have read the following posts, but they are a little over the top for me. I think I'm trying to do something fairly simple, and would like some guidance.
How to pass variables and data from PHP to JavaScript?
passing PHP variables across javascript windows.open to another PHP page
Posting a php variable to a new window
Here is the case:
I have a php script which is very simple, it calls another script and passes 2 variables:
<?php
echo '<script type="text/javascript" language="javascript">
window.open("http://callpage.com/utils/cdr.php?callernum=123456789&calltime=2017-02-22 16:24:12");
</script>';
?>
Note: This is just a "hardcoded" example.
The next script, takes those numbers and builds file/url variable.
Lets say
$file = /var/www/html/file.wav
What I'm trying to do open a new window to the effect of :
http://newpage.com/$file
I have read and found that I think the best use is Javascript, but I can't seem to get my variable into the Javascript.
Here is what I would like to get working:
<?php
$file = /var/www/html/file.wav
echo '<script type="text/javascript" language="javascript">
window.open("http://newpage.com/$file");
</script>';
?>
A few notes:
I don't want to "redirect" the old page, I want it to stay open, and the remote page isn't on the same domain
(one is a.domain.com and the other is b.domain.com).
I don't care about window sizes, etc, its a wav file that I'm expecting the browser to just play with a simple Browser default interface for Wav.
if I understood correctly what you want, you have to concatenate the string with the variable in order to be replaceed
<?php
$file = '/var/www/html/file.wav';
echo '<script type="text/javascript" language="javascript">
window.open("http://newpage.com/'.$file.'");
</script>';
?>
Use string interpolation with double quotes for the echo statement and single quotes everywhere inside the javascript:
echo "<script type='text/javascript' language='javascript'>
window.open('http://newpage.com/$file');
</script>";
The interpolated PHP variable $file should be correctly interpreted as a string and the value it holds should be displayed in the URI of your javascript.
Check out this easy to understand info about variable interpolation http://phppot.com/php/variable-interpolation-in-php/
Here is my "final" code snippet:
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
$uid = $row['uniqueid'];
foreach(glob($path. "*". $uid. "*") as $file) {
$link = "http://newpage.com$file";
echo "<script type='text/javascript' language='javascript'>
window.open('$link');
</script>";
}
}

send a varible through load functon [duplicate]

This question already has answers here:
Best way to pass parameters to jQuery's .load()
(2 answers)
Closed 10 months ago.
i would like to send a variable on the next page this is what i have at the moment
<? php
//some code
$ID = $_GET['ID'];
echo "<div id='show_here'></div>";
<script type ="text/javascript">
$(document).ready(function(){
setInterval(function(){
$('#show_here').load('fetch.php')
}, 3000);
});
</script>
so i would like to send the variable $ID in to the next page i assume it will be something like this .load(fetch.php?=id=$id') but it doesn't work can some one please help me out here
i think the first think is to define the variable id in the jQuery part but i do not know how to go about it please help
If I were you, I'd clean that code up properly before anything else.
<? php
//some code
$ID = $_GET['ID'];
?>
<div id='show_here'></div>
<script type ="text/javascript">
$(document).ready(function(){
setInterval(function(){
$('#show_here').load('fetch.php?id=<?php echo $ID; ?>') // we put the ID here
}, 3000);
});
</script>
In your fetch.php file, you'll need to access the $ID via $_GET again.
I'm sticking within the scope of your question here, but something to note is that you best sanitize that information. Especially if you're going to use it in a database query!
you can use
.load('fetch.php?id=<?php echo $id ?>');
or
.load('fetch.php' , {id : '<?php echo $id ?>'}) ;

PHP Session variable in external JS file is null

I am trying to get a PHP session variable into an external JS file. In the JS file, I want to read and use the value of the session variable, but also assign a new value to the Session variable.
I tried this :
php file:
<?php session_start();?>
<html>
<head>
<title></title>
<script src="testjs.php" type="text/javascript"></script>
</head>
<body>
<?php $_SESSION['Count'] = 1; ?>
</body>
</html>
javascript file:
<?php header("Content-type: application/javascript"); ?>
alert("I am an alert box!");
var test = <?php echo $_SESSION['Count'] ?>;
alert(test);
<?php $_SESSION['Count'] = 2 ?>
test = <?php echo $_SESSION['Count'] ?>;
alert(test);
But I keep getting an empty value and my chrome inspector keeps giving me this error: Uncaught SyntaxError: Unexpected token ; for this line: var test = ;
Help needed :)
You need to start the session in the js(php) file:
<?php
session_start();
header("Content-type: application/javascript"); ?>
alert("I am an alert box!");
var test = <?php echo $_SESSION['Count'] ?>;
alert(test);
<?php $_SESSION['Count'] = 2 ?>
test = <?php echo $_SESSION['Count'] ?>;
alert(test);
This is because the browser makes a separate request to this file, as script tag is not the same as a php include.
NOTE interspersing php and js like this is not a good idea. Although the code above will work, it will blur the mental line between serverside (php) and client side, which can lead to broken code like the following:
var abool = false;
var test = <?php echo $_SESSION['Count'] ?>;
if(abool){
<?php $_SESSION['Count'] = 2 ?>
}
var test = <?php echo $_SESSION['Count'] ?>;
alert(test);
In the above, test will = 2, because the php code is executed before the javascript, so the js if block has zero impact on the php, which is essentially:
<?php
echo $_SESSION['Count'];
$_SESSION['Count'] = 2;
echo $_SESSION['Count'];
Looking at your php file, you have a rogue ; at the end of this line:
<?php $_SESSION['Count'] = 2 ?>;
The output would just be:
;
Move the semicolon and you're fine:
<?php $_SESSION['Count'] = 2; ?>
EDIT: It looks like you're not opening the session in your JS file... You're not using require() or include() so I imagine you should start with session_start() before sending headers.
You need to call session_start(); before you access $_SESSION variables. Reference to "php" file in <script> tag makes another separate request to the server.
http://php.net/manual/en/function.session-start.php
you can't call php code in js file ...
php will work when the file extension is php...
for this you need to do :
create/assign javascript variable/object in php file and access it in js file

insert php value inside javascript function

I have this command inside my javascript to create a cookie with a specific value.
...
document.cookie="superpage=John Doe;secure=true";
...
My goal: I want the content of this cookie inserted via PHP.
So I tried this: In a separate PHP file i declared
$myvalue = "superpage=John Doe;secure=true";
Then I changed the javascript cookie creation to this:
...
document.cookie= '<?php echo $myvalue; ?>';
...
Cookie is then created but with the value <?php echo $myvalue and not the string I defined via PHP. Any help is highly appreciated.
Put your JavaScript on a page with .php extension and your code will work, .i.e:
file.php
<?php
$myvalue = "superpage=John Doe;secure=true";
?>
then, on the same page, outside the php block:
<script>
document.cookie= '<?php echo $myvalue; ?>';
</script>
There seems to be confusion on how to mix php with javascript. The only way to do so would be with javascript inside a php file:
<?php
php code.....
$myvalue = "superpage=John Doe;secure=true";
echo '
<script>
javascript code....
document.cookie= '.$myvalue.'
</script>';
?>

Reading php vars in js? [duplicate]

This question already has answers here:
How do I pass variables and data from PHP to JavaScript?
(19 answers)
Closed 8 years ago.
I have a config file in PHP.
return array(
'window_width' => 1000,
'window_height' => 800
//etc
);
How can I read these vars into my javascript? Should I echo them to the page, in perhaps a data attribute and pick them up from there? Or is there a better way?
<script>
var settings = <?php echo json_encode($your_array); ?>;
alert(settings.window_width);
</script>
Echo them directly where you need them in javascript. You can echo a javascript object to reflect the data structure. Something like this should work:
var x = <?php echo '{window_width:"1000", window_height:"800"}'; ?>;
No. You should echo them to the page.
PHP runs on server, but JavaScript on client machine, browser. In PHP you should echo something like this:
<?php
echo('<script>var myvar = '.$myvar.';</script>');
?>

Categories