Хорошо, это нормально:
$host = "cpanel1";
$username = "trekking_test";
$password = "testtest";
$db_name = "trekking_test";
Тебе это не нужно, твой SQL будет сбивать с толку чтением
$tbl_name = "members";
Отлично.
mysql_connect($host, $username, $password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error_db());
Нет, не плохо. Всегда экранируйте введенные пользователем данные РЕДАКТИРОВАТЬ , а имена форм не совпадают:
$myusername = $_POST['username'];
$mypassword = $_POST['password'];
Это должно быть:
$myusername = mysql_real_escape_string($_POST['username']);
$mypassword = mysql_real_escape_string($_POST['password']);
Вам не нужны все столбцы, поскольку вы просто проверяете счет, а mypassword
имеет неправильный формат
$sql = "SELECT * FROM $tbl_name WHERE username='$myusername' and password='mypassword'";
Должно быть:
$sql = "SELECT `username` FROM `members` WHERE `username`='$myusername' and `password`='$mypassword'";
Вы предполагаете, что запрос выполнен успешно. Вы должны всегда обрабатывать случай, когда это не так:
$result = mysql_query($sql);
if(!$result) {
// Let the user know something went wrong
}
session_register
приведет в замешательство людей, незнакомых с традиционным синтаксисом $_SESSION['name'] = 'value'
, вместо этого используйте более традиционную форму. Вы просто хотите знать, что они вошли в систему, и session_start()
не был вызван:
if($count==1) {
session_start();
$_SESSION['logged_in'] = true;
// The correct format is "Location: control.php"
header("Location: control.php");
exit; //Always exit after sending Location headers
}
else {
echo "Wrong Username or Password";
}
Тогда на вашей странице:
session_start();
if(!isset($_SESSION['logged_in'])) {
// Once again, Location:
header("Location: index.htm");
exit; // exit after redirect
}