2014-03-19 78 views
0

有效值來自重定向後的另一頁。在地址欄中有效值=%273%27。 該值回顯爲'3',但if語句仍然評估爲false。在數據庫表中,我聲明瞭變量valid的類型爲INT。我已經嘗試將變量有效類型更改爲TINYINT和ENUM和VARCHAR,但是沒有用。PHP-如果聲明未評估爲真,儘管所比較的值經過邏輯驗證爲真

<?php 
    $output=""; 
    if($_GET['valid']==3) 
    { 
       $output.="<br/><br/><br/> 
       <h2>You are just one step behind completing your Profile.Please Upload Your Photo Here:</h2> 
       <br/><br/><br/>"; 
       $output.="<form action=\"loadStudent.php\" method=\"post\" enctype=\"multipart/form-data\">"; 
       $output.="<table>"; 
       $output.="<tr>"; 
     $output.="<td align=\"right\"><font size=\"2\" face=\"Arial\"><strong>Picture</strong></font></td>"; 
     $output.="<td align=\"center\">:</td>"; 
     $output.="<td>"; 
     $output.="<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"10485760\">"; 
     $output.="<input type=\"file\" name=\"image\" id=\"file\" size=\"255\"> <font size=\"5\" face=\"Arial\"> Maxsize 1MB</font>"; 
     $output.="</td>"; 
     $output.="</tr>"; 
     $output.="<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</td></tr> 
        <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</td><td colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"Submit\"></td>"; 
        $output.=" </tr>"; 
        $output.="</table>"; 
       $output.="</form>"; 
       echo $userId; 
    echo $output; 

    }//if($valid==3) 
    echo $_GET['valid']; 
    ?> 
+0

@presiuslitelsnoflek什麼是'內聯HTML'? – Ryan

+1

@Ryan我想他是說模板是現在的走向 – meda

+0

@MattThompson所以,你要發表關於這個話題的長篇大人講座,不是嗎? –

回答

4

如果您看到有效=%273%27,這意味着您發送的是單引號'3'。

你可以檢查值「‘3’」

if($_GET['valid']=="'3'") 

或者如果您希望收到一個號碼/整數然後typecast您$ _GET變量從輸入

$valid = intval(str_replace("'",'',$_GET['valid'])); 
if ($valid == 3) 
+0

或修復產生這個網址的代碼,首先是 – Steve

+0

progysm,非常感謝你的工作。它已經毀了我整整一天。感謝你們所有人。 –

1

刪除成爲一個整數值來確定你得到的是什麼。

$number = (int)$_GET['valid']; 
if($valid == 3) { ... 

然後,您將發現您的變量實際上是不是數字3,但它是一個字符串,'3'

您也可以嘗試傾倒你的變量,看看它到底是什麼有:

echo var_dump($_GET['valid']); 

否則爲@progysm建議你可以在一個串級比較:

if($_GET['valid'] == "'3'") { ... 
+0

echo(int)「'3'」;因爲引用而給出0。 – progysm

+0

@progysm - 是的,正確的,但似乎請求者期望輸入是一個整數,所以他最好確保他與一個整數也比較。 – DHS

0

嘗試$_GET['valid']=="'3'"在如果聲明。