티스토리 뷰
간단한 수정이 필요합니다.
class Functions{
public static function login($email,$password){
$response['error'] = false;
$response['errortxt'] = "";
$email = $_GET['email'];
$password = $_GET['password'];
if(isset($_GET['submit']) AND isset($email) AND isset($password)){
$password = md5($password);
$sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$_SESSION['nume'] = $row["name"];
$_SESSION['uid'] = $row["id"];
$_SESSION['admin'] = $row["admin"];
$_SESSION['email'] = $row["email"];
$_SESSION['points'] = $row["points"];
}else{
$response['error'] = true;
$response['errortxt'] = "Invalid Login Credentials";
}
}
return $response;
}
}
다음과 같이 호출해야합니다.
$fnCallStatus = Function::login($email,$password); //Now you have the response;
if($fnCallStatus['error']) //we have an error
{
echo $fnCallStatus['errortxt']; //we print the message
}
-------------------
안녕하세요, 좋은 코딩 원칙과 좋은 취향이 없기 때문에 코드를 약간 수정했습니다 (초 글로벌 $ _GET 변수를 호출하면 함수 매개 변수에 다른 것을 배치하더라도 요청 후에 항상 무언가를 얻을 수 있습니다).
class Functions{
public static function login($email,$password)
{
$error['is'] = true;
$email = htmlspecialchars($email);
$password = md5(htmlspecialchars($password));
if(!empty($email) AND !empty($password))
{
$sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
$row = $result->fetch_assoc();
$_SESSION['nume'] = $row["name"];
$_SESSION['uid'] = $row["id"];
$_SESSION['admin'] = $row["admin"];
$_SESSION['email'] = $row["email"];
$_SESSION['points'] = $row["points"];
} else {
$error['mismatch'] = "Email or password does not match.";
return $error;
}
} else {
$error['empty'] = "Please fill all login fields. Thank you";
return $error;
}
}
}
$error = Function::login($_GET['email'],$_GET['password']);
if($error['is'])
{
if ($error['mismatch']) {
echo $error['mismatch'];
} elseif ($error['empty']) {
echo $error['empty']
}
}
함수는 발생하지 않았음에도 불구하고 항상 $ error를 반환합니다. 나는 그것을 수정하고 쿼리 케이스가 아닌 경우에만 오류를 반환합니다.
함수는 배열을 반환 할 수 있습니다. 따라서 다른 텍스트로 여러 필드를 설정해야하는 경우 원하는 것을 배열에 배치 할 수 있습니다. 이 솔루션은 더 buletproof입니다.
출처
https://stackoverflow.com/questions/39920002
댓글