당신이 전화를 걸면 간단한 로그인을하려고합니다. 나는 MySQLi를 사용하고 있으며 지금까지는 좋아 보인다.password_verify() 대체? - PHP
<?php
ob_start();
$myusername = @$_POST['username'];
$mypassword = @$_POST['password'];
if (isset($_POST['logged'])) {
$link->escape_string($myusername);
$link->escape_string($mypassword);
$stmt = $link->prepare("SELECT * FROM members WHERE username=?") or die ($link->error);
$stmt->bind_param('s', $myusername);
$stmt->execute() or die($stmt->error);
$stmt->store_result();
$count = $stmt->num_rows();
if (!empty($myusername) && !empty($mypassword)) {
if($count == 1) {
$rs = $link->query("SELECT * FROM members WHERE username='$myusername'");
$row = $rs->fetch_array(MYSQLI_ASSOC);
if (password_verify($mypassword, $row['password'])) {
$_SESSION['username'] = $myusername;
$_SESSION['first_name'] = $row['first_name'];
$_SESSION['last_name'] = $row['last_name'];
$_SESSION['email'] = $row['email'];
$_SESSION['loggedIn'] = true;
header("Location: login.php");
}
else {
echo "<p style=\"color: red\">Wrong Password</p>";
}
}
else {
echo "<p style=\"color: red\">Wrong Username</p>";
}
}
else {
echo "<p style=\"color: red\">Fill in all fields</p>";
}
}
?>
그것은 로컬 호스트에서 잘 작동하지만, 슬프게도 나는 로그인 버튼을 누를 때마다, 형태가 사라지고 내가 아무것도 남아있어 때문에 내 도메인에서 작동하지 않습니다. 도메인 공급자에게 연락하여 제 코드에 뭔가있을 수 있다고 말했습니다. localhost 서버에서 작동하므로 내 코드가 좋다는 것을 확신합니다.
번거 로움을 줄이기 위해 대안을 사용할 수 있을지도 모른다고 생각했습니다. 하지만 나는 데이터베이스에 암호를 저장하기 위해 crypt()
을 사용하고 있다는 것을 기억하고 있으며, 나는 그것들이 무작위로 생성된다고 생각한다. 사용자가 입력 한 내용의 암호화 된 버전이 데이터베이스의 내용과 일치하는지 확인하는 다른 방법이 있습니까?
'password_verify()'만이 avai입니다. PHP 5.5를 지원합니다. 호스팅 회사에서 아직 버전을 설치하지 않은 경우 코드가 '정의되지 않은 함수'오류로 인해 충돌하고 빈 흰색 화면이 표시됩니다. –
PHP 함수가 아닌'escape_string'은 정확히 무엇입니까? – Daan