다음은 등록자와 로그인을 포함하는 전체 색인 페이지 코드입니다. 어떤 이유로, 레지스터 부분이 제대로 작동하고 올바르게 삽입됩니다. 그러나 SELECT * FROM에서 $ queryrun (mysql_query ($ query))을 호출 할 때마다 로그인 부분이 작동하지 않아 작동하지 않습니다. 레지스터 부분 코드가 작동하기 때문에SELECT * FROM이 작동하지 않는 이유는 무엇입니까?
<?php
require('includes/dbconnect.php');
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$password = $_POST['password'];
$password = md5($password);
$logemail = $_POST['logemail'];
$logpassword = $_POST['logpassword'];
$logpassword = md5($logpassword);
// Register Script
if (isset($firstname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($password)) {
$query = "INSERT INTO users VALUES('', '$firstname', '$lastname', '$email', '', 'm', '9', '$password', 'bio'";
$queryrun = mysql_query($query);
} else {
echo 'Please fill out all of the form fields';
}
// Login Script
if (!empty($logemail) && !empty($logpassword)){
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'";
$queryrun = mysql_query($query);
while ($row = mysql_fetch_assoc($queryrun)) {
$logemail = $row['logemail'];
}
echo $logemail;
$numrows = mysql_num_rows($query);
if ($numrows > 0){
echo 'User exists';
} else {
echo 'User does not exist';
}
} else {
}
?>
<html>
<head>
<title></title>
</head>
<body>
<form action="index.php" method="POST">
Firstname: <input type="text" name="firstname" /><br />
Lastname: <input type="text" name="lastname" /><Br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Submit" />
</form>
<br /><hr />
<br />
Login:<br />
<form action="index.php" method="POST">
Email:<input type="text" name="logemail" /><br />
Password: <input type="password" name="logpassword" /><br />
<input type="submit" value="Log in" /><br />
</form>
</body>
</html>
데이터베이스에 대한 연결은 그냥 로그인 코드가 아무것도 반환하지 않으며 사용자가 실제로
[새 코드에 mysql_ * 함수를 사용하지 마십시오.] (http://bit.ly/phpmsql) . 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). [빨간색 상자] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). ** [SQL injections] (http://stackoverflow.com/q/60174) ** –
데이터베이스에 암호를 저장하는 것은 좋지 않습니다. 대신 암호의 해시를 계산하고 해시를 저장해야합니다. – AllInOne
당신은 로그인 쿼리에서'$ logemail'과'$ logpassword'를 사용한다는 의미입니까? –