PHP指定的变量不显示
下面是我的登录表单,它包含一个变量PHP指定的变量不显示,php,Php,下面是我的登录表单,它包含一个变量$login\u errors。 当用户出现登录错误时,将为变量分配文本 由于某种原因,如果在$form变量中调用,它不会显示任何文本 但是,我可以使用 $login_errors=”“; $out=“”; $form=” 登录或 或 " . $登录错误。“ 登录 记得我吗 " ; //检查用户是否已登录-重定向到 如果($user->isLoggedin()){ //用户已经登录,所以他们不需要在这里 $session->redirect(“/”); }
$login\u errors
。
当用户出现登录错误时,将为变量分配文本
由于某种原因,如果在$form
变量中调用,它不会显示任何文本
但是,我可以使用
$login_errors=”“;
$out=“”;
$form=”
登录或
或
" . $登录错误。“
登录
记得我吗
"
;
//检查用户是否已登录-重定向到
如果($user->isLoggedin()){
//用户已经登录,所以他们不需要在这里
$session->redirect(“/”);
}
//在输出标记之前检查登录名
如果($input->post->user&&$input->post->pass){
$user=$sanitizer->username($input->post->user);
$pass=$input->post->pass;
$u=$users->get($user);
//检查$pass中提供的密码是否等于tmp_pass
如果($u->id&&$u->tmp\u通行证&&$u->tmp\u通行证===$pass){
//用户使用tmp_通行证登录,因此将其更改为真实通行证
$u->of(假);
$u->pass=$u->tmp\u pass;
$u->save();
$u->of(真);
$u=$session->login($user,$pass);
如果(美元){
//用户已登录,取消tmp_通行证
$u->of(假);
$u->tmp_通行证=“”;
$u->save();
//现在重定向到配置文件编辑页面
$session->redirect('/reset pass change/');
}
}
//如果用户未使用TMP密码登录,则正常进行。
elseif($session->login($user,$pass)){
//登录成功
$session->redirect(“/”);
}
否则{
$login_errors.=“用户名或密码不正确”;
$out.=$form;
}
}
否则{
$out.=$form;
}
?>
首先,您应该为变量指定最终值,然后再将其放入字符串中。例如:
$var = '1';
$form = "The value is " . $var;
$var = '2';
echo $form;//Will output : The value is 1
从PHP脚本的顶部开始。
$login\u errors
的值是多少?
继续执行$form
变量,此处$login\u errors
的值是多少
在这两种情况下,它们都是空的,因此它“不显示”
您在哪里使用的
?再次从脚本顶部开始,确定它的值,您应该知道它为什么不是空的。该变量包含一个空字符串。当您将该值设置为$login_error时,php字符串已经创建,并且不能以您认为的方式进行更改
用占位符替换字符串中的变量,并在获得$login\u errors的最终值后替换它:
<?php
$html = <<<HTML
<h1>{{login_errors}}</h1>
HTML;
// more code
$login_errors = 'You made an error!';
echo str_replace(array('{{login_errors}}'), array($login_errors), $html);
对不起,我很困惑,请您详细说明。@Ankh2054:您正在将$login\u errors=”“
分配给$form
并且无论您如何处理$login\u errors
之后,它将永远不会更改$form
中的内容。您应该将$form=“…
放在上次可能分配的$login\u errors
之后。
<?php
$html = <<<HTML
<h1>{{login_errors}}</h1>
HTML;
// more code
$login_errors = 'You made an error!';
echo str_replace(array('{{login_errors}}'), array($login_errors), $html);