사용자 인증 시스템을 수정하고 있으며 관리자 세션 설정에 문제가 있습니다. reguser
세션이 제대로 설정되어 있지만 admin
이 설정되지 않는 이유를 알 수 없습니다.쿼리 결과에서 세션 변수 설정
userlevel
이 9 인 사용자는 관리자입니다. 예, SQL 인젝션을 방지하는 방법을 알고 있습니다. 나는 지금 그것을 간단하고 쉽게 읽을 수 있도록 노력하고 있습니다. 이것은 아마 아무것도 사용하지 않을 것입니다, 나는 PHP에 대한 경험을 얻고 있습니다.
여러분 안녕하십니까? 나는 일하도록했다. 나는 오랫동안 그것을 꼼짝 않고 바라보고 있었기 때문에 내 마음이 분명하지 않았다. 어제 그걸로 휴식을 취한, 오늘 다시 와서 그것을 5 분 이내에 알아낼 수있었습니다! 너희들은 대단하다, 나는 stackoverflow를 좋아한다! 사용자 데이터가있는 경우
function checklogin($email, $pass) {
$server = 'localhost';
$user = 'root';
$password = '';
$connection = mysql_connect($server, $user, $password) or die(mysql_error());
mysql_select_db(udogoo, $connection) or die(mysql_error());
$pass = md5($pass);
$result = mysql_query("SELECT userid from users WHERE email = '$email' AND password = '$pass'");
$user_data = mysql_fetch_array($result);
$no_rows = mysql_num_rows($result);
if ($no_rows == 1)
{
$_SESSION['reguser'] = true;
$_SESSION['userid'] = $user_data['userid'];
$userid = $user_data['userid'];
$isadmin = mysql_query("SELECT userlevel FROM users WHERE userid = '$userid'");
$isadmin2 = mysql_fetch_array($isadmin);
$isadmin3 = $isadmin2['userlevel'];
if ($isadmin3 == "9"){
$_SESSION['admin'] = true;
return true;
}
}
else
{
return FALSE;
}
}
음, 시작하기를'$의 result'가있다 [리소스는 mysql_query'()에서 반환'] (HTTP : // PHP. net/manual/en/function.mysql-query.php),'SELECT userlevel ... '에 그것을 포함시키는 것이'userid'에 의해 실제로 검색되는 것이 아닙니다. 아마'Resource ID # XX' 또는 무엇인가를 찾고있을 것입니다. –
패스워드에 일반'md5()'값을 사용하는 대신에'CRYPT_BLOWFISH()를 사용하여 ['crypt()'] (http://php.net/manual/en/function.crypt.php) '해쉬 타입은 소금 값을 가지기 때문에 암호 저장이 훨씬 안전합니다. –