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)是不安全的! –