【问题标题】:PHP Header redirect page is returned inside an alert windowPHP Header 重定向页面在警报窗口内返回
【发布时间】:2015-12-24 21:14:44
【问题描述】:

我正在尝试在用户使用 PHP 登录后重定向到网页。

我的PHP代码如下:

    <?php
date_default_timezone_set ('AMERICA/SANTIAGO');   
$dbhost = getenv('OPENSHIFT_MYSQL_DB_HOST').':'.getenv('OPENSHIFT_MYSQL_DB_PORT');
$dbusername = getenv('OPENSHIFT_MYSQL_DB_USERNAME');
$dbpassword = getenv('OPENSHIFT_MYSQL_DB_PASSWORD');
$db_name = 'tuhoramedica';
$mysqlCon = mysqli_connect($dbhost, $dbusername, $dbpassword, "", $dbport) or die ("Disculpa, estamos teniendo algunas dificultades técnicas, por favor intentalo nuevamente más tarde. Gracias por tu comprensión.\n");
mysqli_select_db($mysqlCon, $db_name) or die("Disculpa, estamos teniendo algunas dificultades técnicas, por favor intentalo nuevamente más tarde. Gracias por tu comprensión.\n");
//Prevent SQL Injection
$usuario=mysqli_real_escape_string($mysqlCon, $_POST['user']);
$password=mysqli_real_escape_string($mysqlCon, $_POST['pass']);
stripslashes($user);
stripslashes($password);
$sql = "select * from usuarios where username='".$usuario."' and pswd='".$password."'";
$result=$mysqlCon->query($sql);
if ($result->num_rows === 1) {
    session_start();
    $row = $result->fetch_assoc();
    //echo "Bienvenido " . $row["nombre"]." ".$row["apellido"];
    $_SESSION["nr_usuario"] = $row["nr_usuario"];
    $_SESSION["nombre_usuario"] = $row["nombre"];
    $_SESSION["apellido_usuario"] = $row["apellido"];
    $_SESSION["mail_usuario"] = $row["mail"];
    $_SESSION["username_usuario"] = $row["username"];
    $_SESSION["autentica"] = "SIP";
    header("Location: http://tuhoramedica-chakana.rhcloud.com/filtro_horas.php");
    exit;
} else {
    echo "Lo sentimos, su usuario y/o contraseña no coinciden.";
}
$mysqlCon->close();
?>

PHP 代码登录成功,甚至检索选定的文件。问题是它不会将其显示为网页,而是在浏览器警报窗口中返回页面代码:

Check the snapshot of what's returned

我已经在网上冲浪了一段时间,以寻找有同样问题的其他人,但我一无所获。

顺便说一句,我正在使用 PHP 和 Mysql 在 Openshift 上运行我的应用程序。

【问题讨论】:

  • 如果你用大写 L 代替 Location 会发生什么?
  • 你试过没有ob_start();ob_end_flush();的简单header("Location....etc吗?
  • 我尝试过使用位置和简单的标题,但都不起作用。它也不是浏览器,因为我在 chrome 上遇到了同样的问题
  • ob_end_flush();不应该在那里,因为它将数据发送到浏览器。如果这不能解决问题,则可能是您的脚本中较早的部分导致了问题。
  • 我删除了 ob-end_flush() 并编辑了问题以包含整个脚本。它仍然无法正常工作...

标签: php header window openshift alert


【解决方案1】:

http://php.net/manual/en/function.stripslashes.php

返回一个去掉反斜杠的字符串。

这段代码本身并没有做任何事情。

stripslashes($user);
stripslashes($password);

我猜你想要

$usuario = stripslashes($usuario);
$password = stripslashes($password);

错误报告可能会输出关于 $user$password 不存在的错误,并弄乱您的标头输出。

编辑

我在发布答案时注意到隐藏的 cmets。很高兴您解决了问题,但您可能仍想解决上述问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多