我剛剛開始使用PHP進行編碼,並且被重定向卡住了。我接受了提交表單中的$ _POST信息並將它們分配給變量。我收到2個密碼變量:$ password和$ c_password。我的目標是檢查這兩個密碼是否匹配,如果他們想要散列它們。如果沒有,我想發回用戶(重定向)到register.php頁面。問題是如果我阻止了JavaScript重定向下的所有內容,它就會起作用。但是如果我在js重定向之後不阻止腳本,用戶就會在數據庫中註冊並重定向到login.php頁面。下面是我到目前爲止編碼:重定向腳本,用表格哈希處理後的PHP
<?php
// Open database connection
include 'db_connect.php';
// check existence and accept form data
if(isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['c_password'])) {
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$c_password = $_POST['c_password'];
}
// Hash the password if password and c_password match
if(strcmp($password, $c_password) == 0) {
$password = hash('sha512',$_POST['password']);
}
else { ?>
<script type="text/javascript">
document.location = './register.php?pass_nomatch=1';
</script>
<?php
}
// Create a random salt
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
// Create salted password (Careful not to over season)
$password = hash('sha512', $password.$random_salt);
// Add your insert to database script here.
// Make sure you use prepared statements!
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) {
$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt);
// Execute the prepared query.
$insert_stmt->execute();
// Close MYSQL database connection
mysqli_close($mysqli);
// Redirect user to login page
header('Location: ./login.php');
}
?>
如果任何人有回答我的問題請儘快回覆:)
重定向是什麼意思?你的意思是,重定向用戶到另一個頁面? – samayo 2013-05-11 14:00:16
我不完全確定你的問題是什麼,但我會建議使用標題重定向(標題(「位置:網址/」);)像你最後做的而不是JavaScript,就像你在中間做的一樣。 – Matt 2013-05-11 14:02:13
@Matt我嘗試過頭('register.php?pass_nomatch = 1');但是如果在header()之後有任何代碼,則它不起作用。 – Dribba 2013-05-11 14:05:46