2013-05-17 2 views
0

그냥 빠른 하나, 내가 자리를 잡을 수 없어하고 다른 사람이 내 실수를 발견 할 수 있기를 바라고 있었는데, 나는 PHP로 작성된 문자열 검증 코드가 있고 내가 가지고있는 문제는 양식 제출 단추가 눌려지기 직전에 "customerfname"필드의 유효성을 검사하는 것처럼 보입니다. 양식을 열면 "제출 이름을 입력하십시오"라는 오류가 제출 단추를 누르기 전에 표시됩니다. 누구든지 내 실수를 발견 할 수 있었습니까?양식 제출 전에 유효성을 확인하십시오

<?php 

$flag = false; 
$badchar = ""; 
$string = $_POST["customerfname"]; 
$string = trim($string); 
$length = strlen($string); 
$strmsg = ""; 

if (isset($_POST["submit"])) { 
    if ($length == 0) { 
     $strmsg = '<span class="error"> Please enter your first name</span>'; 
     $flag = true; 
     $valid = false;} 
    else if ($length > 30) { 
     $strmsg = '<span class="error"> Can not enter more than 30 characters</span>'; 
     $flag = true; 
     $valid = false; 
     } 
else{ 
    for ($i=0; $i<$length;$i++){ 
     $c = strtolower(substr($string, $i, 1)); 
     if (strpos("abcdefghijklmnopqrstuvwxyz-", $c) === false){ 
      $badchar .=$c; 
      $flag = true; 
      $valid = false; 
     } 
    } 
    if ($flag) { 
     $strmsg = '<span class="error"> The field contained the following invalid characters: '.$badchar.'</span>';} 
    } 
    if (!$flag) { 
     $valid = true; 
    } 
} 

?> 

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo"> 

<td><label for="customerfname">Customer First Name: </label></td> 
<td><input type="text" id="customerfname" name="customerfname" size=50/><?php echo $strmsg; ?></td> 

<p><input type="submit" name="submit" value="Save Data"/>&nbsp;<input type="reset" value="Clear Form" /> 

</form> 
+0

정규식 학습, 당신은 후회하지 않을 것이다. – elclanrs

+0

시도했으나 문제가 없었습니다 ... $ _POST [ 'submit']가 전송되지 않았음에도 불구하고 인증 코드를 입력하지 않은 것으로 나타났습니다. –

+3

제출 버튼이 없습니까? – Kuzgun

답변

0
<?php 
$flag = false; 
$badchar = ""; 
$strmsg = ""; 
if(isset($_POST['customerfname'])) 
{ 
$string = $_POST["customerfname"]; 
$string = trim($string); 
$length = strlen($string); 
} 
if (isset($_POST["submit"])) { 
if ($length == 0) { 
$strmsg = '<span class="error"> Please enter your first name</span>'; 
$flag = true; 
$valid = false;} 
else if ($length > 30) { 
$strmsg = '<span class="error"> Can not enter more than 30 characters</span>'; 
$flag = true; 
$valid = false;} 
else { 
for ($i=0; $i<$length;$i++){ 
    $c = strtolower(substr($string, $i, 1)); 
    if (strpos("abcdefghijklmnopqrstuvwxyz-", $c) === false){ 
     $badchar .=$c; 
     $flag = true; 
     $valid = false; 
    } 
} 
if ($flag) { 
    $strmsg = '<span class="error"> The field contained the following invalid characters: '.$badchar.'</span>';} 
} 
if (!$flag) { 
    $valid = true;} 
    var_dump($valid); 
} 

?> 

<form method="POST" action="" id="custinfo"> 

<td><label for="customerfname">Customer First Name: </label></td> 
<td><input type="text" id="customerfname" name="customerfname" size=50/><?php echo $strmsg; ?></td> 
<td><input type="submit" name="submit" /></td> 

</form> 
+0

어떻게 작성해야합니까? – AJJ

+0

$ _POST가 귀하의 요구 사항 인 – user2117650

+0

을 충족하고이를 작성하지 않을 때 귀하의 의견을 표시하려면 $ 유효하지 않습니다 : user2117650

0

당신은 이름으로 "제출"과 함께 제출 버튼을 추가하고, 여기 if (isset($_POST["submit"]))

에서 POST 요청에 관한 모든 라인을 이동해야이 작업입니다 (에 훨씬 더있다 개선,하지만 그 시작) 코드 버전 :

<?php 

$flag = false; 
$badchar = ""; 
$strmsg = ""; 

if (isset($_POST["submit"])) { 

    $string = (isset($_POST["customerfname"])) ? $_POST["customerfname"] : ''; // if customerfname wasn't sent, $string will be empty 
    $string = trim($string); 
    $length = strlen($string); 

    if ($length == 0) { 
     $strmsg = '<span class="error"> Please enter your first name</span>'; 
     $flag = true; 
     $valid = false; 
    } 
    else if ($length > 30) { 
     $strmsg = '<span class="error"> Can not enter more than 30 characters</span>'; 
     $flag = true; 
     $valid = false; 
    } 
    else { 
     for ($i=0; $i<$length;$i++) { 
       $c = strtolower(substr($string, $i, 1)); 
       if (strpos("abcdefghijklmnopqrstuvwxyz-", $c) === false) { 
        $badchar .=$c; 
        $flag = true; 
        $valid = false; 
       } 
     } 
     if ($flag) { 
      $strmsg = '<span class="error"> The field contained the following invalid characters: '.$badchar.'</span>'; 
     } 
    } 
    if (!$flag) { 
     $valid = true; 
    } 
} 

?> 

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo"> 

<td><label for="customerfname">Customer First Name: </label></td> 
<td><input type="text" id="customerfname" name="customerfname" size=50/><?php echo $strmsg; ?></td> 
<td><input type="submit" name="submit"></td> 

</form> 
+0

"submit"이라는 이름의 제출 버튼이 있고 현재 isset ($ _ POST [ "submit"]))에 PHP 코드의 전체 섹션이 있습니다.하지만 어쨌든 여전히 운이 좋지 않은 방법으로 시도했습니다. – AJJ

+0

"if ($ length == 0)"대신 "if (empty ($ string))"를 시도하십시오. btw 귀하의 PHP 버전은 무엇입니까? – evuez

관련 문제