我有这段代码
<?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";
}
}
&GT;
所以,我需要保存一个变量(我把“问题放在这里”)并在下面比较,但这段代码不起作用,我不知道为什么
答案 0 :(得分:1)
我建议用来比较字符串参考: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;
}
答案 1 :(得分:0)
如果您期望$hello
在页面加载之间存活,那么您就不幸了。
相反,您需要在sessions之间保持变量。
BTW,第$hello;
行没有做任何事情。
修改我之所以认为您需要会话的原因是您只在$hello
时设置$campo == "newPassword"
,之后只会在{{{}}时期望它为某个值1}}。你永远不会改变$campo == "passwordMatch"
的值,显然不能同时改变它们。这意味着这两个逻辑将在不同的页面加载上运行。
答案 2 :(得分: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
错过了一个空缺{
并关闭了}
。
同时强>
对于字符串比较,您应该使用===
而不是数字==
详细信息如下:
答案 3 :(得分:0)
我遇到了同样的问题,原来是空格,我用trim($myVar);
来修复。