2014-06-08 3 views
-2

사용자가 이름, 성, 학생 번호 및 이메일과 같은 형식으로이 데이터를 추가해야하는 로그인 양식을 만들려고했습니다.PHP가있는 MySQL에서 여러 양식 필드의 유효성을 검사하는 방법은 무엇입니까?

MySQL 데이터베이스에 테스트 사용자가 있지만 지금까지 작동하지 않습니다. 내 코드는 다음과 같습니다.

<?php 
//Start session// 
session_start(); 

//Include database connection file and header file// 
include_once('resources/includes/database.inc.php'); 
include_once('header.php'); 

?> 

<!-- Login form --> 

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
//Escape de gebruikersnaam 
$sFirstName = mysql_real_escape_string($_POST['firstname']); 
$sLastName = mysql_real_escape_string($_POST['lastname']); 
$sStudentNumber = ($_POST['studentnumber']); 
$sEmail = ($_POST['email']); 
$sSQL = 'SELECT `id`, `firstName`, `lastName`, `studentNumber`, `email`, `accepted` FROM `student` WHERE `firstName` = \'' . $sFirstName . '\''; 
$rsSQL = mysql_query($sSQL); 
$aUser = mysql_fetch_array($rsSQL); 
    //Er is geen rij gevonden en $aUser is false: 
//Dat betekent dat er geen user is met de opgegeven gebruikersnaam 
if($aUser == false) 
{ 
    echo '<strong>Deze gebruiker is niet gevonden</strong>'; 
} 
//Vergelijk de rest 
elseif($aUser['lastname'] != $sLastName) 
{ 
    echo '<strong>De achternaam is niet bekend</strong>'; 
} 

elseif($aUser['studentnumber'] != $sStudentNumber) 
{ 
    echo '<strong>Het studentnummer is niet geldig</strong>'; 
} 

elseif($aUser['email'] != $sEmail) 
{ 
    echo '<strong>Het e-mailadres is niet bekend</strong>'; 
} 

//Inloggen gelukt 
else 
{  //De combinatie is goed, maak de sessie aan 
    $_SESSION['login_user'] = $aUser['id']; 

    //Verstuur de gebruiker door 
    header("location: studentloggedin.php"); 

    //Mocht de redirect hierboven niet werken: 
    echo '<strong>Je bent ingelogd, klik <a href="studentloggedin.php">hier</a> om door te gaan.</strong>'; 
} 
} 
?> 

<form method="post"> 
<table> 
<tr> 
    <td>Voornaam</td> 
    <td><input type="text" name="firstname" /></td> 
</tr> 

<tr> 
    <td>Achternaam</td> 
    <td><input type="text" name="lastname" /></td> 
</tr> 

<tr> 
    <td>Studentnummer</td> 
    <td><input type="text" name="studentnumber" /></td> 
</tr> 

<tr> 
    <td>Email</td> 
    <td><input type="text" name="email" /></td> 
</tr> 

<tr> 
    <td><input type="submit" value="Inloggen" /></td> 
</tr> 

</table> 
</form> 
<?php 
$html = file_get_contents('resources/templates/homecontent.template.html'); 
print $html; 
include_once('resources/templates/footer.template.html'); 
?> 

누구나 내가 뭘 잘못하고 있는지 알 수 있습니까? 내 데이터베이스 사용자에 따라 모든 것을 정확하게 채우면 'De achternaam is niet bekend'입니다. 성은 인식되지 않습니다. 아마도 MySQL 쿼리의 유효성을 검사해야합니까?

+0

내 삭제 된 답변에 대한 코멘트에서 "학교 프로젝트 용입니다."숙제에 대해 행운을 내세요! – JakeGould

+0

안녕하세요, 제이크. 고맙습니다. 미안 해요. 이 직업을 가진 사람들 만 전문적으로 도움을 받아야한다고 생각하십니까? 나는 stackoverflow 여기에 더 이상의 질문을하지 않을 것 같아요. 나는이 주제에 매우 관심이 있으며 나중에 이것을 전문적으로하고 싶을 것입니다. 저는 이제 겨우 20 살이 고 막 배우기 시작했습니다. – Julia

+0

"나는 지금 겨우 20 살이 며 방금 배우기 시작했습니다."나는이 사이트와 다른 곳에있는 사람들보다 더 젊은 사람들을 도왔으며 귀하의 코드는 재앙입니다. 답변을 제공 할 때 관련없는 다른 질문을하는 것이 도움이되지 않습니다. 이것은 다른 사람들이 당신을 위해 당신의 일을하도록 할 수있는 대화방이 아닙니다. @ Devon의 대답이 도움이 될 것입니다. 행운을 빕니다! – JakeGould

답변

1

배열 키는 대/소문자를 구분합니다.

$aUser['lastname']! = $aUser['lastName']

MySQL의 API는 사용되지 않습니다으로 또한 mysql_에서 멀리 이동해야합니다. 준비된 문과 함께 PDO 또는 MySQLi를 사용하여 SQL 주입을 피하십시오. 현재 검색어에 검색어로 직접 $_POST 변수를 사용하여 검색어를 열어 볼 수 있습니다.

디버깅을 위해 나중에 문제가있는 경우 배열을 인쇄하는 것이 좋습니다 (print_r($aUser)). 그것은 당신에게 여행을 여기에서 구했을지도 모른다.

관련 문제