2013-09-02 2 views
0

제출 된 양식을 확인하는 스크립트이 있습니다.

모든 필드이 모두 채워 졌는지 확인하고 이전에 양식을 제출했는지 확인합니다. 또한 입력 된 데이터가 이미 데이터베이스에 있는지 여부를 확인합니다.

입력 한 데이터가 데이터베이스에 있는지 확인하려고하면 항상 false을 반환합니다.

내 질문은 : POST 값이 같은지 어떻게 효율적으로 확인할 수 있습니까?PHP 변수를 비교할 때마다 false가 반환됩니다.

코드 :

if($_POST != $_POST) 

당신은 아마도 DB에서 결과를 비교하고 싶어 :

<?php 
error_reporting(E_NOTICE^E_ALL); 
$Name = $_POST['name']; 
$ID = $_POST['id']; 
$Topic_1 = $_POST['1']; 
$Topic_2 = $_POST['2']; 
$Topic_3 = $_POST['3']; 
$Topic_4 = $_POST['4']; 
$Topic_5 = $_POST['5']; 
$Topic_6 = $_POST['6']; 
$Topic_7 = $_POST['7']; 
$Topic_8 = $_POST['8']; 
$Topic_9 = $_POST['9']; 
$Topic_10 = $_POST['10']; 
$Topic_11 = $_POST['11']; 
$Topic_12 = $_POST['12']; 
$Topic_13 = $_POST['13']; 
$Topic_14 = $_POST['14']; 
$Topic_15 = $_POST['15']; 
$IP = $_SERVER['REMOTE_ADDR']; 

$Connect = new mysqli("127.0.0.1", "root", "", "Data"); 
$Check = 'SELECT * FROM Submissions WHERE School_ID = "'.$ID.'" AND IP = "'.$IP.'"'; 
$Insert = 'INSERT INTO Submissions (Name, School_ID, Topic_1, Topic_2, Topic_3, Topic_4, Topic_5, Topic_6, Topic_7, Topic_8, Topic_9, Topic_10, Topic_11, Topic_12, Topic_13, Topic_14, Topic_15, IP) VALUES ("'.$Name.'", "'.$ID.'", "'.$Topic_1.'", "'.$Topic_2.'", "'.$Topic_3.'", "'.$Topic_4.'", "'.$Topic_5.'", "'.$Topic_6.'", "'.$Topic_7.'", "'.$Topic_8.'", "'.$Topic_9.'", "'.$Topic_10.'", "'.$Topic_11.'", "'.$Topic_12.'", "'.$Topic_13.'", "'.$Topic_14.'", "'.$Topic_15.'", "'.$IP.'")'; 

if($Name && $ID != "") 
{ 
    if($Result = $Connect->query($Check)) 
    { 
     $Rows = $Result->num_rows; 
     if($Rows == 0) 
     { 
      if($_POST != $_POST) 
      { 
       if($Go = $Connect->prepare($Insert)) 
       { 
        if($Go->execute()) 
        { 
         echo 'Thanks'; 
        } 
        else 
        { 
         echo 'There Was An Error'; 
        } 
       } 
       else 
       { 
        echo 'There Was An Error'; 
       } 
      } 
      else 
      { 
       echo 'No Two Values Can Match.'; 
      } 
     } 
     else 
     { 
      echo 'You Cant Vote Twice.'; 
     } 
     $Result->close(); 
    } 
    else 
    { 
     echo 'There Was An Error.'; 
    } 
} 
else 
{ 
    echo 'Please Fill Out All Fields'; 
} 
$Connect->close(); 
+4

오 자비. 나는 그 문제를 해결하는 방법의 예를 만들 것입니다 ... – m59

+1

이것은 무엇을하기로되어 있습니까? '$ _POST! = $ _POST' –

+1

당신은 준비된 진술을 사용하지 않습니다.이것은 매우 위험한 코드입니다 !!! – m59

답변

0

귀하의 if 문이 여기에

if($name != "" && $check != "") 
+0

메신저가 같지 않은지 확인하려고 시도하지 않았습니다. 두 동등한 지 확인하려고합니다. –

+0

비교를 사용하여 데모 스크립트를 사용해 보았습니다. if ($ Name && $ Check! = ""'그리고 항상 false를 반환했습니다. –

+0

덧붙여서,''''함수를 ​​사용하는 것은'' "''와 비교하는 것보다 낫습니다 –

0

과 같아야 오류 발생 대신 $ _POST를 사용하십시오.

+0

모든 $ _POST가 서로 일치하지 않는다는 것을 비교했습니다 –

+0

아니요, if ($ _ POST! = $ _POST)''$ _POST' 배열을 항상 true 인 자체와 비교합니다. –

0

비교하기 전에 변수에 var_dump()를 사용하여 실제로 포함 된 내용을 확인하십시오.

var_dump($Name); 
var_dump($ID); 
exit(); 

그런 다음 음수 또는 양수가 일치하는지 확인하십시오.

if(!empty($Name) && empty($ID)){ 
exit('ah, name filled in but not id ...'); 
} 

별도의 파일로 스푸핑 할 수도 있습니다. 이 같은

<?php 
$Name = 'Bob'; 
$ID = ''; // or use 0 or any test you want 

var_dump($Name); 
var_dump($ID); 

if(!empty($Name) && empty($ID)){ 
exit('ah, name filled in but not id ...'); 
} 

문제를 격리하고 당신이 당신의 목적지에 도착까지 다음 더 라인을 추가, 뭔가 작업을 진행, 당신은 점진적으로 개발하는 데 도움이 될 것입니다.

0

이전에 양식을 제출했는지 쉽게 확인할 수 없습니다.

한 가지 방법은 요청이 POST와 함께 제공된 경우 양식에 숨겨진 필드를 하나 더 추가하는 것입니다. 그런

뭔가 :

if(isset($_POST['second_post'])) { 
    // Second time of form post; 
} else { 
    // First (or zero) time post. 
} 
0

하지 두 POST 값이 동일 할 경우 확인하려면 :

<form method="POST" action=""> 
     <?php 
     if(isset($_POST['submit'])) { 
      echo '<input type="hidden" name="second_post" value="1">'; 
     } ?> 
     <!-- Other form items --> 
     <input type="submit" name="submit" value="1"> 
    </form> 

이 그럼 당신은 확인할 수 있습니다 두 번째 시간이 그 것이다

array_diff($_POST, array_unique($_POST)); 
0

찾고있는 내용은 다음과 같습니다.

$_POST['1'] = 'a'; 
$_POST['2'] = 'b'; 
$_POST['3'] = 'c'; 
$_POST['4'] = 'a'; 
$_POST['5'] = 'd'; 

$results = array_unique($_POST); 
var_dump($results); 

반환 :`else` 재해의

array 
    1 => string 'a' (length=1) 
    2 => string 'b' (length=1) 
    3 => string 'c' (length=1) 
    5 => string 'd' (length=1) 
관련 문제