Хорошо, это определенно простой вопрос и глупый, но поскольку я развивался на локальном хостинге, я даже не осознавал, что это проблема. Заголовок для перенаправления на страницу участников в loginscript не работает, потому что он установлен неправильно. Это не вызывало проблемы с wamp, а на реальном сервере. Сценарий включен в html-файл по причинам, которые слишком долго говорят здесь. В сценарии ничего не повторяется, пока что-то не пойдет не так, но затем сценарий остановлен. Где я должен разместить заголовок перенаправления?Куда поместить функцию заголовка
Вот Войти сценарий:
<?php
// Connects to your Database
include ("database.php");
//Checks if there is a login cookie
if(isset($_SESSION['username']))
//if there is, it logs you in and directes you to the members page
{
echo '<div id="probwarn"><t1><b>You are already logged in! You do not need to do it again.</b></t1></div>';
}
//if the login form is submitted
if (isset($_POST['submit'])) { // if form has been submitted
$flag = 0; // Safety net, if this gets to 1 at any point in the process, we don't upload.
// makes sure they filled it in
if(!$_POST['username'] | !$_POST['pass']) {
echo('<div id="probwarn"><t1>You did not fill in a required field.</t1></div>');
$flag = $flag + 1;
}
// checks it against the database
$pass = htmlspecialchars(mysql_real_escape_string($_POST['pass']));
$username = htmlspecialchars(mysql_real_escape_string($_POST['username']));
$check = mysql_query("SELECT * FROM members WHERE username = '".$username."'")or die(mysql_error());
//Gives error if user dosen't exist
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
if($flag == 0) {
echo('<div id="probwarn"><t1>You must <a href="register.html"> <b>register</b></a> first.</t1></div>') ;
}
$flag = $flag + 1;
}
$check = mysql_query("SELECT * FROM members WHERE username = '".$username."'")or die(mysql_error());
$pass = htmlspecialchars(mysql_real_escape_string($_POST['pass']));
$username = htmlspecialchars(mysql_real_escape_string($_POST['username']));
while($info = mysql_fetch_array($check))
{
$_POST['pass'] = stripslashes($_POST['pass']);
$info['password'] = stripslashes($info['password']);
$_POST['pass'] = md5($_POST['pass']);
//gives error if the password is wrong
if ($_POST['pass'] != $info['password']) {
if($flag == 0) {
echo('<div id="probwarn"><t1>Incorrect password, please try again.</t1> </div>');
$flag ++;
} }
}
// if login is ok then we add a cookie
if($flag == 0) {
$pass = htmlspecialchars(mysql_real_escape_string($_POST['pass']));
$username = htmlspecialchars(mysql_real_escape_string($_POST['username']));
$_SESSION['username']=$username;
$_SESSION['password']=$pass;
//then redirect them to the members area
//THIS IS THE HEADER
header("Location: ../members.html");
}
}
else
// if they are not logged in
?>
LOGIN FORM IS USUALLY HERE
Пожалуйста, не используйте функции 'mysql_ *' для нового кода. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). См. [** красное поле **] (http://goo.gl/GPmFd)? Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, [эта статья] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите узнать, [это хороший учебник PDO] (http://goo.gl/vFWnC). –
@Truth большое спасибо, я получу обучение –
@Truth: В то время как полезный комментарий, было бы еще более полезно, если бы он подсказал легкость использования над положительными побочными эффектами безопасности. Не стоит лгать о гипотетической «усталости», когда руководство просто говорит [«обескуражен»] (http://php.net/mysql_query) пока. Избыточное сокращение URL-адресов является избыточным. – mario