2012-08-15 4 views
3

사용자가 제출하는 등록 양식이 있고 양식 입력 상자에 입력 된 것이 있는지 확인하기 위해 isset ($ _ POST)을 사용하여 데이터가 전송됩니다. 그렇지 않은 경우 다른 사람에게 보내어 누락 된 양식을 완성하기 위해 등록 양식으로 사용자를 돌려 보내는 함수로 보냅니다. 어떤 이유로 그것은 제대로 작동하지 않습니다.양식에 적절하게 작동하지 않는 isset()

여기 ----------------------

다음

function returnBack(){ 

    header("Location:register.php"); 
    exit; 

} 

if(isset($_POST['myusername'])) 
{ 
    $myusername = $_POST['myusername']; 
} 
else 
{ 
    returnBack(); 
} 
if(isset($_POST['mypassword'])) { 
    $mypassword=$_POST['mypassword']; 

} 
else{ 

    returnBack(); 
} 
if(isset($_POST['myemail'])) { 

    $myemail=$_POST['myemail']; 
} 
else{ 

    returnBack(); 
} 
if(isset($_POST['myname'])) { 

    $myname=$_POST['myname']; 
} 
else{ 

    returnBack(); 
} 
if(isset($_POST['mylastname'])){ 

    $mylastname=$_POST['mylastname']; 

} 
else{ 

    returnBack(); 
} 
/////////////////////////////////////////////////////////////*******CONNECT TO SERVER ******************************************************************/ 
try { 
    # MySQL with PDO_MYSQL 
    $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password); 
    $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

} 
catch(PDOException $e) { 
    echo "I'm sorry, I'm afraid I can't do that."; 
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND); 
} 
////////////////////////////////////////////////////////////***********INSERT REGISTER DATA INTO DB ***************************************************************/ 
//$encrypt_password = md5($mypassword); 

$insertdata = $DBH->prepare("INSERT INTO members (username, password, email, firstname, lastname) VALUES ('$myusername','$mypassword','$myemail','$myname','$mylastname')"); 
$insertdata->execute(); 
echo "success"; 

$DBH = null; 
양식의 섹션 ------- 내 검사 코드입니다 --------

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<form name="register" method="post" action="insertnewmem.php"> 
<td> 
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
<tr> 
<td colspan="3"><strong>Registration Form </strong></td> 
</tr> 
<tr> 
<td width="78">Username</td> 
<td width="6">:</td> 
<td width="294"><input name="myusername" type="text" id="myusername" ></td> 
</tr> 
<tr> 
<td>Password</td> 
<td>:</td> 
<td><input name="mypassword" type="text" id="mypassword"></td> 
</tr> 
<tr> 
<td>Email</td> 
<td>:</td> 
<td><input name="myemail" type="text" id="myemail"></td> 
</tr> 
<tr> 
<td>First Name</td> 
<td>:</td> 
<td><input name="myname" type="text" id="myname"></td> 
</tr> 
<tr> 
<td>Last Name</td> 
<td>:</td> 
<td><input name="mylastname" type="text" id="mylastname"></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td><input type="submit" name="Submit" value="Register"></td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 

업데이트] ---------------------------------- ------------

죄송합니다. 형식이 올바르게 채워지지 않아도 returnBack() 함수를 건너 뛰고 db에 삽입합니다.

+2

"제대로 작동하지 않는다"는 것은 무엇을 의미합니까? 오류가 있습니까? 빈 페이지를 줘? 아무것도하지 마세요? 무언가를하십시오, 그러나 당신이 예상하는 것이 아닙니다. – andrewsi

+0

제대로 작동하지 않습니다. 그냥 리디렉션되지 않습니까, 아니면 POST 데이터를 가져 오지 못하고 있습니까? –

+0

죄송합니다 ------- (isset)을 무시하고 함수를 건너 뜁니다. –

답변

7

대신 !empty()을 시도하십시오. null, false, 0 또는 빈 문자열 ''이외의 것이있는 경우에만 true로 평가됩니다. 빈 문자열이 제출 된 것 같습니다.

+0

완벽하게 작동했습니다. –

+0

@DavidBiga 문제가 없습니다. 해결책이 효과가 있다면 답을 표시하십시오. – Ray

4

다른 사람이 답변을 게시했지만 이유를 설명해 드리겠습니다.

isset()은 값이 무엇이 아닌 값이 설정되어 있는지를 확인하기 만하면됩니다. 양식을 제출할 때 빈 문자열을 각 입력 값으로 전달합니다.

if(isset($_POST['variable']) && $_POST['variable'] !== "") 

첫 번째 부분은 (두 번째 조건은 오류가 발생하지 않도록)와 두 번째 조건은 문자열이 비어 있지 않은지 확인합니다 변수가 존재 확인합니다 :

는 일반적으로 나는이 사용 확인.

+0

오, 고마워! 지금은 @ Ray가 잘 작동하고 코드가 적다는 것을 이해합니다 :) –

+0

물론 Yah입니다. 변수가 존재하지 않으면 @ Ray의 함수가 작동하는 것을 알지 못합니다. ($ _POST [ 'variable']가 설정되지 않았습니다.) 일반적으로 변수 값을 확인하기 전에 isset()을 확인하십시오. 그러나 이미 내장되어있을 수 있습니까? – trevorkavanaugh

+0

@trevorkavanaugh empty()는 변수가 설정되어 있는지 먼저 확인합니다. – Ray