나는 로그인 한 사용자를 확인하는 PHP 스크립트를 작성하고 있습니다. 전자 메일 주소와 암호를 모두 입력했는지 확인하고, SQL에 연결하고 데이터를 확인하고, 세션을 등록하고, 업데이트하는 작업을 포함합니다. 로그인 시간.PHP에 대한 올바른 오류보고
사용자가 양식을 작성하고이 페이지로 이동하면 스크립트가 작동하지 않으며 ELSE 문 다음의 오류 메시지로 바로 이동합니다. 그것은 sql의 'last_login'을 업데이트하지 않습니다.
이 스크립트의 문제를 어떻게 해결할 수 있을지 궁금해했습니다. 어디에서 오류 처리를 할 수 있습니까? 모든 mysql_*
$sql = mysql_query("SELECT * FROM users WHERE email_address='$email_address' AND password='$password' AND activated='1'");
session_register()
및 mysql_*
을 계속 사용하는 원인
session_start();
include 'dbconuser.php';
//post var
$email_address = $_POST['email_address'];
$password = $_POST['password'];
//check both fields completed
if((!$email_address) || (!$password))
{
echo "Please enter ALL of the information!<br/>";
include 'login.htm';
exit();
}
$password = md5($password);
//connect and check data
$sql = mysqli_query($connection, "SELECT * FROM users WHERE email_address='$email_address' AND password='$password' AND activated='1'");
$login_check = mysqli_num_rows($sql);
if($login_check > 0)
{
while($row = mysqli_fetch_array($sql))
{
foreach($row AS $key => $val)
{
$key = stripslashes($val);
}
// register session
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email_address'] = $email_address;
$_SESSION['user_level'] = $user_level;
mysqli_query($connection, "UPDATE users SET last_login=now() WHERE userid='$userid'");
header("Location: index.php");
}
}
//error
else
{
include 'login_error.htm';
echo "You could not be logged in! Either the email_address and password do not match or you have not validated your membership!<br />
Please try again!<br />";
}
mysql과 mysqli를 섞어서 사용 하시겠습니까? –
당신은'mysqli _ *()'와 더 이상 사용되지 않는'mysql _ *()'함수 호출의 잘못된 조합이 있습니다. [PHP에서 SQL 삽입을 방지하는 방법] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)을 검토하고이 모든 것을 MySQLi로 변환하십시오. 링크 된 질문과 MySQLi ['prepare()/execute()'] (http://php.net/manual/en/mysqli.prepare.php) 문서의 예제를 사용하여 이제 학습을 시작할 때입니다. SQL 삽입 취약점을 수정할 준비가 된 문장을 사용하는 것. –
Im은 SQL을 주입하지 않으므로 확실하지는 않지만 누군가 전자 메일 주소가 'OR userid = 1'과 같은 형식으로 게시 할 수도 있습니다 - – OIS