【问题标题】:Form Not Redirecting After Submit Header Location in PHP Not Working在 PHP 中提交标题位置后表单不重定向不起作用
【发布时间】:2017-08-10 00:20:02
【问题描述】:

我的 PHP 标头重定向不起作用,我似乎无法弄清楚原因。我已经阅读了很多问题,但我尝试过的任何方法似乎都不起作用。

<?php
define('DBHOST','shareddb1d.hosting.stackcp.net');
define('DBUSER','JoplinLeftHand-3231135a');
define('DBPASS','Banoodle1!');
define('DBNAME','JoplinLeftHand-3231135a');

$link = mysql_connect(DBHOST, DBUSER, DBPASS);

if (!link) {
    die('Could Not Connect: ' . mysql_error());
} else {
    echo "You Are Connected<br>";
}

$db_selected = mysql_select_db(DBNAME, $link);

if (!$db_selected) {
    die('Can\'t Use ' . DBNAME . ': ' . mysql_error());
} else {
    echo "Database Selected";
}
$tid = $_POST['tid'];
$first = $_POST['first'];
$last = $_POST['last'];
$zip = $_POST['zip'];
$descrip = $_POST['descrip'];

$sql = "INSERT INTO tracking (tracking_id, tracking_first, tracking_last, tracking_zip, tracking_descrip) VALUES ('$tid', '$first', '$last', '$zip', '$descrip')";

if (!mysql_query($sql)) {
    die('Error: ' . mysql_error());
} else {
    header("Location:/?p5");
}

【问题讨论】:

  • 您很容易受到 SQL 注入的攻击,您需要解决这个问题。 mysql_* 函数已弃用,您需要使用 mysqli 或 PDO。

标签: php redirect header location


【解决方案1】:

header('Location: ...'); 必须是脚本的第一个输出,否则它将不起作用。您在执行重定向之前使用了两次echo,这里:

echo "You Are Connected<br>";

这里:

echo "Database Selected";

此外,某些客户端要求在 Location 标头中传递的 URL 是绝对 URL,而不是相对 URL,例如:

header("Location: http://example.com/?p5");

【讨论】:

  • 谢谢。这绝对是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2022-01-17
相关资源
最近更新 更多