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 ['redirect'] '。それらを '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)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)のステートメントについて学んでください。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –