2011-03-15 177 views
0

我有這樣的代碼PHP - 比較兩個變量

<?php 

ob_start(); 
header("Content-Type: text/html; charset=ISO-8859-1"); 

$campo = $_GET['campo']; 
$valor = $_GET['valor']; 
$hello; 

    if ($campo == "myPassword") { 
     if (!preg_match("/^\S{4,12}$/", $valor)) { 
      echo "Tamanho entre 4 e 12 letras e sem espaços"; 
     } 
     else 
      $hello = $valor; //problem here 
      echo $hello; 
    } 

if ($campo == "passwordMatch") { 
    if ($hello != $valor) { 
     echo "Passwords don't match"; 
    } 
} 

>

所以,我需要保存一個變量(其中i 「這裏的問題」 放)及以下比較,但是這個代碼沒? 't工作,我不知道爲什麼

+0

定義「這段代碼沒有工作」。 – 2011-03-15 19:40:23

+0

謹慎展開「沒有工作」 – 2011-03-15 19:40:33

+0

你看到了什麼樣的問題? '$ hello'是一個空字符串,還是你得到了PHP異常/錯誤?嘗試'var_dump($ _ GET);'以確保您在接收數據時,如果問題是'$ hello'爲空。 – William 2011-03-15 19:40:54

回答

0

我會建議使用比較字符串引用:http://php.net/manual/en/function.strcmp.php

if(strcmp($str1,$str2)): 
endif; 

if(!strcmp($str1,$str2)): 
endif; 

以及與此

if (!preg_match("/^\S{4,12}$/", $valor)) { 
      echo "Tamanho entre 4 e 12 letras e sem espaços"; 
     } 
     else { 
      $hello = $valor; //problem here 
      echo $hello; 
     } 
0

如果你期望$hello在頁面加載之間生存,你運氣不好。

相反,您需要自行保留sessions之間的變量。

順便說一句,行$hello;不會做任何事情。

編輯我假設你需要會話的原因是,你設置$hello只有當$campo == "newPassword",然後再期望它是有一定價值,只有當$campo == "passwordMatch"。你永遠不會改變$campo的價值,顯然它不可能是兩者兼而有之。這意味着這兩部分邏輯將在單獨的頁面加載上運行。

+0

我想要的是用戶執行新註冊表時的簡單比較。 – anvd 2011-03-15 19:45:51

+0

@Fel:什麼是「新註冊表」?當你不知道它是什麼時,你如何知道你所需的解決方案是「簡單」的?請按照上面的建議閱讀會議,然後決定是否在代碼中需要這些內容。另請參閱我的編輯。 – 2011-03-15 19:50:42

0

取代你的代碼看起來就像你在這裏有一個語法問題:

if ($campo == "myPassword") { 
     if (!preg_match("/^\S{4,12}$/", $valor)) { 
      echo "Tamanho entre 4 e 12 letras e sem espaços"; 
     } else { // missing bracket 
      $hello = $valor; //problem here 
      echo $hello; 
      } // missing bracket 
    } 

是你的問題嗎?您的ELSE缺少開幕{並關閉}

ALSO

對於字符串比較,你應該使用===,而不是一個數值==

詳情請看這裏:

0

我有同樣的問題,原來是空白的,我用trim($myVar);來修復。