2011-03-15 181 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);来修复。