Javascript警报和php标头

Javascript警报和php标头,php,Php,我有点小问题。当我得到没有标题的PHP脚本时,我得到了javascript警报框。但当我在警报前使用header时,它不起作用。它像应该的那样重定向我,但它没有显示任何框。有人能帮我吗 if ( $pkt < 1 OR $user_id == 0) { header("Location: http://dunno.com/file.php"); $message = 'This is a message.'; echo "<SCRIPT> //not show

我有点小问题。当我得到没有标题的PHP脚本时,我得到了javascript警报框。但当我在警报前使用header时,它不起作用。它像应该的那样重定向我,但它没有显示任何框。有人能帮我吗

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或$user\u id==0){
标题(“位置:http://dunno.com/file.php");
$message='这是一条消息';
echo//不给我看这个
警报(“$message”);
";
mysql_close();
}
这是一个有效的(但没有标题)

if($pkt<1或$user\u id==0){
$message='这是一条消息';
回声“//指给我看
警报(“$message”);
";
mysql_close();
}
我将感谢您的帮助:)

@是否有任何命令使警报等待整个浏览器加载?(如果是问题)

这是一个重定向:
标题(“位置:http://dunno.com/file.php");


下面的代码不起作用

默认情况下,下面的header函数将运行302重定向,并将客户端重定向到,这样,在header函数开始处理代码后的任何代码都不会被视为客户端从该代码所在的页面重定向

 header("Location: http://dunno.com/file.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");
}
if($pkt<1或$user\u id==0)
{
$message='这是一条消息';
echo//不给我看这个
警报(“$message.”);
";
睡眠(10);
mysql_close();
标题(“位置:http://dunno.com/file.php");
}

也许可以尝试使用JavaScript重定向

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

    echo "<SCRIPT> //not showing me this
        alert('$message')
        window.location.replace('url of the page');
    </SCRIPT>";
    mysql_close();
}
if($pkt<1或$user\u id==0){
$message='这是一条消息';
echo//不给我看这个
警报(“$message”)
window.location.replace('页面的url');
";
mysql_close();
}

您的错误在代码的结构中。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');

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

session_start();
if ( $pkt < 1 OR $user_id == 0) {
$_SESSION['message']= "this is a message";
header("Location: http://dunno.com/file.php");
session_start();
如果($pkt<1或$user\u id==0){
$\会话['message']=“这是一条消息”;
标题(“位置:http://dunno.com/file.php");
在file.php上:

session_start();
echo "<SCRIPT> //not showing me this
alert($_SESSION['message']);
</SCRIPT>";
    mysql_close();
}
echo "<SCRIPT> //not showing me this
alert($_GET['message']);
</SCRIPT>";
    mysql_close();
}
session_start();
echo//不给我看这个
警报($_会话['message']);
";
mysql_close();
}
另一个选择是将它们与标题一起传递。像这样:

if ( $pkt < 1 OR $user_id == 0) {
$message= "this is a message";
header("Location: http://dunno.com/file.php?message=" . $message . ");
if($pkt<1或$user\u id==0){
$message=“这是一条消息”;
标题(“位置:http://dunno.com/file.php?message=“$message。”);
然后在file.php上:

session_start();
echo "<SCRIPT> //not showing me this
alert($_SESSION['message']);
</SCRIPT>";
    mysql_close();
}
echo "<SCRIPT> //not showing me this
alert($_GET['message']);
</SCRIPT>";
    mysql_close();
}
echo”//不给我看这个
警报($_获取['message']);
";
mysql_close();
}

使用$\u服务器“php\u self”。它将允许您在需要警报的同一页面上创建脚本。这样您就不必添加标题

下面是一个例子:

<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>";
        }

我知道这是一篇老文章,但下面是我在类似示例中的制作方法。此示例检查管理员是否已从特定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']);
}
session_start();
如果(isset($\u会话['errorMessage'])){
回声“
警报(“$”会话['errorMessage'.]”);
";
//要在刷新后不再显示错误消息,请执行以下操作:
会话未设置($会话['errorMessage']);
}

为什么需要标题?警报的目的是什么-如果在用户单击“确定”后发生重定向?如果用户单击“取消”怎么办?在
文件.php
中有什么?可能包括它?您的意图是什么?是关于我页面上的HTML表单,它执行一个php脚本。当有人发送它时,他丢失了(例如id)我想让他得到这个alertbox。这个方法比其他方法工作得更好,但我没有得到错误消息?它只是一个空白的消息框”page说。。。“@saltcracker,在那里做了一个小的调整,看看这是否有什么不同。我在编辑了一些内容后做了这个,问题是我必须开始一个会话。我将做出一个新的回答,描述我是如何做到的。