Javascript警报和PHP标头

时间:2014-04-24 14:27:17

标签: php

我有点问题。当我得到我的PHP脚本没有标题它没关系,我收到javascript警告框。但是当我在警报之前使用标题时它不起作用。它正在重新定向我,但它没有显示任何框。有人能帮助我吗?

if ( $pkt < 1 OR $user_id == 0) {
    header("Location: http://dunno.com/file.php");
    $message = 'This is a message.';

echo "<SCRIPT> //not showing me this
alert('$message');
</SCRIPT>";
    mysql_close();
}

这是一个有效的(但没有标题)

if ( $pkt < 1 OR $user_id == 0) {
    $message = 'This is a message.';

echo "<SCRIPT> //showing me
alert('$message');
</SCRIPT>";
    mysql_close();
}

我会感谢您的帮助:)。

@edit也许是否有任何命令让警报等到整个浏览器加载? (如果是问题)

7 个答案:

答案 0 :(得分:0)

这是重定向: header("Location: http://dunno.com/file.php");

下面的代码无法正常工作

答案 1 :(得分:0)

下面的标题函数默认会运行302重定向并将客户端重定向到http://dunno.com/file.php所以代码开始处理之后的任何代码都不会被看作是客户端从页面重定向此代码是的。

 header("Location: http://dunno.com/file.php");

请在此处详细阅读标题功能:http://www.php.net/manual/en/function.header.php

如果你需要显示如下信息,你可以让你编程睡眠/等待几秒钟(比如本例中的10秒钟)重定向:

if ( $pkt < 1 OR $user_id == 0)
{
    $message = 'This is a message.';

    echo "<SCRIPT> //not showing me this
       alert('".$message."');
    </SCRIPT>";

    sleep(10);

    mysql_close();

    header("Location: http://dunno.com/file.php");
}

答案 2 :(得分:0)

也许尝试使用JavaScript进行重定向。

if ( $pkt < 1 OR $user_id == 0) {
    $message = 'This is a message.';

    echo "<SCRIPT type='text/javascript'> //not showing me this
        alert('$message');
        window.location.replace(\"http:://localhost\");
    </SCRIPT>";
    mysql_close();
}

答案 3 :(得分:0)

您的错误在代码结构中。 PHP,即使在OOP中也是程序性的,并且将逐个运行每一行。因此,您构建代码的方式意味着页面在回显之前被重定向。更好的方法是使用javascript警告框重定向您的页面:

var prompt=window.confirm("message here. \r\n"+"Do you want to redirect?");
if(prompt)document.location.href='http://dunno.com/file.php');

答案 4 :(得分:0)

Aaroniker对重定向评论是正确的。使其工作的一种方法是使用会话变量发送消息,然后将消息创建添加到下一页,就像这样。

session_start();
if ( $pkt < 1 OR $user_id == 0) {
$_SESSION['message']= "this is a message";
header("Location: http://dunno.com/file.php");

在file.php上:

session_start();
echo "<SCRIPT> //not showing me this
alert($_SESSION['message']);
</SCRIPT>";
    mysql_close();
}

另一个选择是用你的标题传递它们。像这样:

if ( $pkt < 1 OR $user_id == 0) {
$message= "this is a message";
header("Location: http://dunno.com/file.php?message=" . $message . ");

然后在file.php上:

echo "<SCRIPT> //not showing me this
alert($_GET['message']);
</SCRIPT>";
    mysql_close();
}

答案 5 :(得分:0)

使用$ _SERVER&#39; php_self&#39;。它允许您在需要警报的同一页面上创建脚本。通过这种方式,您不必添加标题。

以下是一个例子:

<form name="login" action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" accept-charset="utf-8" class="form_class">
                        <ul>
                            <li>
                                <label for="usermail">Username</label>
                                <input type="text" name="username" placeholder="Enter username" required>
                            </li>
                            <li>
                                <label for="password">Password&nbsp;</label>
                                    <input type="password" name="password" placeholder="Enter your password" required>
                            </li>
                            <li id="custom">
                                <input type="submit" value="Sign In">
                            </li>
                        </ul>
                    </form>


$sqluname="root";
$sqlpword="hrhk";
$database="registration";
$server="127.0.0.1";
$db_handle=mysql_connect($server,$sqluname,$sqlpword,$database);
$db_found = mysql_select_db($database, $db_handle);

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $uname = $_POST["username"];
    $pword = $_POST["password"];

    $ulength=strlen($uname);
    $plength=strlen($pword);

        if($ulength > 5){
            $sqlquery="SELECT * FROM members WHERE username='$uname' AND password='$pword'";
            $result=mysql_query($sqlquery);
            $num_rows=mysql_num_rows($result);
                if ($num_rows >0) {
                    echo "<script>alert('Logged In');</script>";

                    session_start();
                        $_SESSION['sid']=$uname;
                        header("location:Yahoo/yahoo.php");
                }
                else{

                    echo "<script>alert('Wrong Username or Password!');</script>";
                }
        }
        else{


            echo"<script>alert('Username should be greater than 5 characters.');</script>";
        }

}

&GT;

答案 6 :(得分:0)

我知道这是一个老帖子,但这是我在一个类似的例子中做到的。此示例检查管理员是否已从特定IP地址登录,如果它返回false,则应将用户重定向回登录页面并显示错误消息。

用户已登录页面:

if ($_SERVER['REMOTE_ADDR'] == "ip address"){
    $admin = True;
}else{
    session_start();
    $_SESSION['errorMessage'] = "WARNING: You dont have access to this area.";
    header("Location: login.php");
}

的login.php:

session_start();

if(isset($_SESSION['errorMessage'])){
    echo "<script type='text/javascript'>
            alert('" . $_SESSION['errorMessage'] . "');
          </script>";
    //to not make the error message appear again after refresh:
    session_unset($_SESSION['errorMessage']);
}