Newbie
Newbie

Reputation: 1714

php echo javascript alert() not working

I would like to display a popup message when user is logged out, so I use

echo "<script>alert(\"You are logged out\");</script>";

But it doesn't work.

Below is my coding. Is there any logic problem in my coding?

<?php
session_start();
if(isset($_SESSION['Username']) == "admin")
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
@import "../CSS/Style.css";
@import "../CSS/Admin.css";
</style>
<title>Admin Home Page</title>
</head>

<body>
<div class="body"></div>
<?php
    if(isset($_GET['id']) == "logout")
    {
        session_destroy();
        echo "<script>alert(\"You are logged out\");</script>";
        header("Location: ..\Main.php");
    }
    else
    {
?>
<div class="menu">
    <a href="ManageStaff.php">Manage Staff</a>
</div>

<div class="menu2">
    <a href="ManageAccount.php">Manage Account</a>
</div>

<div class="logout">
    <a href="AdminHomePage.php?id=logout">Logout</a>
</div>
<?php
    }
}
else
{
?>
<center>
<p style="font-size:50px; font-weight:bold">Access Denied</p>
<p style="font-size:18px">Your request for this page has been denied because of access control</p>
</center>
<?php
}
?>
</body>
</html>

The session will be destroyed and will also redirect to Main.php, just the alert() will not come out.

Upvotes: 4

Views: 16612

Answers (4)

Vivek Singh
Vivek Singh

Reputation: 2447

use this it will solve your problem!! first change your code from

if(isset($_SESSION['Username']) == "admin")
{ 

to

if(!empty($_SESSION['Username']) && ($_SESSION['Username']=="admin")){

and than use following code

 if(!empty($_GET['id']) && ($_GET['id']=="logout"))
        {
          session_destroy();?>
             <script>
             alert("You are logged out");
             window.location.href='..\Main.php';
             </script>
           <?php }?>

Upvotes: 2

Steve K
Steve K

Reputation: 4921

You're doing an echo and then writing a relocate header. If you did your relocate in the javascript (after the user clicked the alert), it would probably work the way you expect it to.

echo "<script>alert('You are logged out'); window.location.href='..\Main.php';</script>";

Also, the way that you use isset will cause problems because isset returns true or false (it checks if a value is present), rather than returning the value.

So instead of

if(isset($_SESSION['Username']) == "admin")

You need to do:

if(isset($_SESSION['Username']) && $_SESSION['Username'] == "admin") 

Upvotes: 9

Hamza Kubba
Hamza Kubba

Reputation: 2269

header("Location: ..\Main.php"); tells the browser to go to another page before it even shows the page... if you want the user to see the alert, try this:

session_destroy();
echo "<script>";
echo "alert('You are logged out');";
echo "window.location = '../Main.php';"; // redirect with javascript, after page loads
echo "</script>";

Upvotes: 2

Nandan Bhat
Nandan Bhat

Reputation: 1563

Try, This must work, And remove php header, replace with the following code.

 echo "<script>alert('You are logged out');
 location.href='..\Main.php';
 </script>";

Upvotes: -1

Related Questions