我在php文件中设置一个会话变量:
$_SESSION['PageFrom']="check_login_test.php";
稍后通过表单和帖子将控件转移到另一个php文件。第二个文件中的相关代码是:
session_start();
$from=trim($_SESSION['PageFrom']);
pageFrom("check_login_test.php",$from);
die('I came here');
现在pageFrom是一个应该比较字符串的函数,并且这样说。原来的功能只是
function oldPageFrom($page,$from)
{
$page= trim($page);
$from=trim($from);
if (strcmp($page,$from)!==0)
{
echo 'The pages are not same';
}
}
由于它没有按预期工作,我试图尽可能多地调试它并输出(这改变了旧函数,但现在揭示了一些有趣的东西)。功能是
function pageFrom($page,$from)
{
echo '<br/>$page='.$page;
echo '<br/>$from='.$from;
$m=trim($page);
$n=trim($from);
echo "<br/>TrimmedPage=$m<br/>TrimmedFrom=$n";
$k= strcmp($m,$n);
echo '$k='.$k;
if($k !==0);
{
$i=strlen($from);
$j=strlen($page);
if ($i==$j)
{
echo "<br/>The string lengths are Equal $i=$j";
die('Equal in unequal');
}
else
{
echo "<br/>The string lengths are UnEqual $i<>$j";
die('UnEqual in unequal');
}
}
echo 'Works as expected. They are equal'; die('equal');
}
奇怪的是我得到以下输出:
$页= check_login_test.php
从$ = check_login_test.php
TrimmedPage = check_login_test.php
TrimmedFrom = check_login_test.php $ K = 0
字符串长度为等于20 = 20等于不等
所以问题是: (1)我修剪了琴弦。它们是相同的,长度相同。 Strcmp返回0.那么为什么它进入循环if($ k!== 0)呢?注意:($ k!= 0)也没有运气。
答案 0 :(得分:2)
您正在使用以下代码:
if($k !==0);
{
分号(;
)终止if
子句,随后的{ }
块不会产生任何影响。移除;
之后的if
,它将按预期工作,即下面的代码
if($k !==0)
{