저는 2 주 전에 대학 프로젝트로 시작한 PHP의 초보자이며 로그인 페이지에서 세션과 어려움을 겪고 있습니다. print_r ($ SESSION) 함수를 인쇄 할 때 비어있는 것으로 나타납니다. 다음은 아래 코드입니다 (ps. 지금은 SQL 주입에 대해 걱정하지 마십시오).
다른 모든 기능은 완벽하게 작동합니다. 오류가 완벽하게 표시됩니다. 세션 값이 비어 있습니다.
건설적인 피드백 만하시기 바랍니다! 그리고 2 주 전에 시작 했으므로 pls가 너무 복잡하지 않도록 노력해야한다는 것을 기억하십시오.
<?php
session_start();
include 'dbconnect.php';
$emailerror = $passworderror = "";
if(isset($_POST['submit']))
{
$email= $_POST["email"];
$password= $_POST["password"];
if (empty($email)) {
$emailerror = "*Email must be entered";
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$emailerror= "*Invalid email address Entered";
}
// To check if email has already been used or if another account with the same email exists
else{
$emailquery = ("SELECT * FROM `Potential_Employee` WHERE `Email` = '$email'");
$emailcheckresult = mysqli_query($connection, $emailquery);
if(mysqli_num_rows($emailcheckresult) == 1){
$row=mysqli_fetch_assoc($emailcheckresult);
if (!password_verify($password, $row['Password'])){
$passworderror = "*Password is incorrect!";
}
else{
$_SESSION['Email'] = $email;
$_SESSION['logged_in'] = true;
echo "<script>document.location='EmployeeDashboard.php';</script>";
}
}
else{
$emailerror = "*Email does not exist";
}
}
if (empty($password)) {
$passworderror = "*Password must be entered";
}
elseif (strlen($password) < 4)
{
$passworderror= "*Password Has to be greater than 8 Characters";
}
약간의 팁, 나는 늘 SQLI을 언급 .. 당신이 만약 예를 들어 오류를 저장하십시오. $ errors [ 'email'], $ errors [ 'password']'와 같은 배열에서'$ emailerror, $ passworderror'를 호출하면 비어 있는지 여부를 간단히 확인할 수 있습니다. 더 멋진 그룹화,보다 쉽게 뷰를 전달하는 등으로 더 깨끗하게 만들 것입니다. 그리고 일단 20 개 이상의 입력이있는 폼으로 옮기면 모든 글로벌 바를 기억할 필요가 없습니다. 하나의 var 만 디버깅하십시오. 해피 코딩 .. –
좋은 지적 @ LawrenceCherone 해피 코딩 –
@ LawrenceCherone 아 고맙습니다. – TomCreed