2017-10-10 76 views
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變量,但出現同樣的問題也試過。非常困惑什麼是錯的。

+0

您的'$ url'(用於'header()')被設置爲'BASE_URL。 $ _SESSION [ '重定向']'。如果你試圖將它們重定向到'profile.php',它不應該被設置爲'profile.php'嗎? –

+0

@Obsidian年齡我希望登錄表單可以用於多頁重定向,而不僅僅是profile.php頁面。因此,如果我有另一個頁面需要登錄,它將重定向到所述頁面,而不是profile.php – Qwerty

+1

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

回答

0
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC); 

正在銷燬以前存儲的會話變量。