0
初学者在这里想知道我做错了什么。进入profile.php并重定向到login.php,然后登录后,用户总是被重定向到BASE URL。我希望用户被重定向到profile.php。PHP登录后重定向到BASE URL而不是前一页
profile.php
if (!isset($_SESSION['id'])) {
$_SESSION['redirect'] = $_SERVER['REQUEST_URI'];
$url = BASE_URL . 'login.php';
ob_end_clean();
header("Location: $url");
exit();
} else {
echo 'Logged in'
}
的login.php
$q = "SELECT * FROM users WHERE (username='$username' AND password=SHA1('$password'))";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br>MySQL Error: " . mysqli_error($dbc));
if (@mysqli_num_rows($r) == 1) {
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
mysqli_close($dbc);
$url = BASE_URL . $_SESSION['redirect'];
ob_end_clean();
header("Location: $url");
exit();
} else {
echo 'Message';
}
使用$ _ GET变量,但出现同样的问题也试过。非常困惑什么是错的。
您的'$ url'(用于'header()')被设置为'BASE_URL。 $ _SESSION [ '重定向']'。如果你试图将它们重定向到'profile.php',它不应该被设置为'profile.php'吗? –
@Obsidian年龄我希望登录表单可以用于多页重定向,而不仅仅是profile.php页面。因此,如果我有另一个页面需要登录,它将重定向到所述页面,而不是profile.php – Qwerty
如果[Little Bobby](http://bobby-tables.com/)的密码是'pwn')) OR 1 = 1; - '在这种情况下[你的脚本存在SQL注入攻击的风险](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。了解[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)[准备](http://en.wikipedia.org/wiki/Prepared_statement)声明。即使[转义字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –