Я застрял, пытаясь создать код входа с PHP и MySQL. Когда я нажимаю кнопку входа в систему, даже если имя пользователя и пароль верны, она не переходит на следующую страницу: она просто обновляет страницу login.php. Я не уверен, в чем проблема в моем коде.Почему этот login.php не работает?
Этот же код работает на локальном сервере, но в Интернете это не так.
<?php
session_start();
include './db_connect.php';
$error = " " ;
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password =md5($_POST['password']);
if((!isset($username)) || ($username=="") || (!$username == " ") || (!isset($password)) || ($password=="") || (!$password == " ")){
$error = "Please enter the details";
}
else{
$username = $_POST['username'];
$password =md5($_POST['password']);
$query = mysql_query("SELECT * FROM admin WHERE admin_name = '".$username."' and password = '".$password."'");
$row = mysql_fetch_array($query);
$username_db = $row['admin_name'];
$password_db = $row['password'];
if(($username == $username_db) && ($password ==$password_db))
{
header ("Location:admin_hotel_details.php");
$_SESSION['username']=$username_db;
}
else{
$error = "Username and password do not match";
}
}
}
?>
Это admin.php (мой код формы)
<form name="" action="admin.php" method="post">
<style type="text/css">
label{width:130px;}
</style>
<table cellpadding="4" style="margin-left:10px;">
<tr>
<td colspan="2"><span style="color:#F00;">
<?php
if(isset($_GET['msg'])){
$msg = $_GET['msg'];
$error = "Successfully logged out";
}
if(isset($error)){echo $error;}
?>
</span></td>
</tr>
<tr>
<td style="width:150px;"><label for="username">Username: <span style="color:#F00;">*</span>:</label></td>
<td style="width:100px;">
<input type="username" name="username" id="username" onkeyup="javascript:this.value=this.value.toUpperCase();" style="width:205px" />
</td>
</tr>
<tr>
<td style="width:100px;"><label for="password">Password:<span style="color:#F00;">*</span>:</label></td>
<td style="width:100px;"><input type="password" name="password" onkeyup="javascript:this.value=this.value.toUpperCase();" id="password" style="width:205px;" /></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
<td style="width:100px;">
<input type="submit" name="submit" id="submit" value="Login"/>
<input type="reset" name="reset" id="reset" value="Reset"/>
</td>
</tr>
</table>
</form>
Я также попытался другой login.php
<?php
include("./db_connect.php");
session_start();
$error = " " ;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Username and password sent from form in HTML
$myusername = $_POST['username'];
$mypassword = md5($_POST['password']);
$sql = "SELECT * FROM admin WHERE admin_name = '".$myusername."' and password ='".$mypassword."'";
$result = mysql_query($sql) or die(mysql_error($sql));
$row = mysql_fetch_array($result);
$count = mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if ($count == 1) {
$_SESSION['login_user'] = $myusername;
header("location:admin_hotel_details.php");
} else {
$error = "Your username or password is invalid";
}
}
?>
Это дает мне ту же самую проблему (на месте заголовка) ,
Не могли бы вы высказать свой код формы. – Aidan
Имейте в виду, если ECHO infront ваших назначений переменных отправляет содержимое в браузер, что приведет к сбою функции заголовка. Вы должны установить заголовки перед контентом – Marc
, проверьте, генерирует ли mysql_query любую mysql-ошибку, такую как $ query = mysql_query ("...") или die (mysql_error()); – aconrad