有人可以告诉我我的代码有什么问题吗?
$c = '<div class="desc">';
if( $_POST['login_post'] == '1') {
$username = $_POST['user_login'];
$password = $_POST['password'];
$message = log_in_user($username, $password);
}
display_message($message);
$c .= '<form name="loginform" id="loginform" method="post" action="">
<label>Username:</label>
<div><input type="text" name="user_login" id="user_username" value="" size="20" maxlength="40" tabindex="10" /></div>
</div>
<div class="group">
<label>Password:</label>
<div><input type="password" name="password" id="user_password" value="" size="20" maxlength="40" tabindex="20" /></div>
</div>
<input type="hidden" name="login_post" value="1"/>
<div class="group">
<label></label>
<div><input type="submit" name="submit" id="submit" class="bluebutton" value="Log In Now" /><span class="forgotlink"><a href="/forgot-password/">Forgot your password?</a></span></div>
</div>
</form>
</div>';
$c = str_replace('%value%',5,$c);
return $c;
display_message($message);
函数应该在desc
div中显示消息。相反,它显示在desc
div的上方(外部)。
我是否错误地连接了PHP代码?如果是的话,有人可以纠正我吗?谢谢!
这是我的display_message函数:
function display_message( $message = false ) {
if( is_wp_error( $message ) ) {
echo '<div class="errorMessage"><p>' . $message->get_error_message() . '</p></div>';
}
elseif ($message != '') {
echo '<div class="successMessage"><p>' . $message . '</p></div>';
}
}
答案 0 :(得分:2)
display_message()
将打印出消息而不是连接消息。尝试将display_message($message);
更改为$c .= htmlspecialchars($message);
,它应该按照预期在div中结束。
编辑:由于display_message不仅仅显示消息,因此需要稍微重写;
function format_message( $message = false ) {
if( is_wp_error( $message ) ) {
return '<div class="errorMessage"><p>' . $message->get_error_message() . '</p></div>';
}
elseif ($message != '') {
return '<div class="successMessage"><p>' . $message . '</p></div>';
}
}
和串联应该是;
$c .= format_message($message);
答案 1 :(得分:1)
如果您的函数display_message()
回应了某些内容,则需要使用输出缓冲来捕获结果并将其添加到$c
变量中。否则就会马上回应。
编辑:使用输出缓冲:
ob_start();
display_message($message);
$c .= ob_get_contents(); // adding output to the variable
ob_end_clean();
更好的选择可能是让display_message()
返回一个字符串并将该字符串添加到$c
。
根据您的编辑,我只需将功能更改为:
function display_message( $message = false ) {
if( is_wp_error( $message ) ) {
return '<div class="errorMessage"><p>' . $message->get_error_message() . '</p></div>';
}
elseif ($message != '') {
return '<div class="successMessage"><p>' . $message . '</p></div>';
}
return NULL;
}
并且做:
$c .= display_message($message);
答案 2 :(得分:1)
尝试将登录结果加载到另一个变量中,然后显示它,然后将其集中到$ message。
$c = '<div class="desc">';
if( $_POST['login_post'] == '1') {
$username = $_POST['user_login'];
$password = $_POST['password'];
$login_message = log_in_user($username, $password);
}
display_message($login_message);
$c .= $login_message . '<form name="loginform" id="loginform" method="post" action="">
<label>Username:</label>
<div><input type="text" name="user_login" id="user_username" value="" size="20" maxlength="40" tabindex="10" /></div>
</div>
<div class="group">
<label>Password:</label>
<div><input type="password" name="password" id="user_password" value="" size="20" maxlength="40" tabindex="20" /></div>
</div>
<input type="hidden" name="login_post" value="1"/>
<div class="group">
<label></label>
<div><input type="submit" name="submit" id="submit" class="bluebutton" value="Log In Now" /><span class="forgotlink"><a href="/forgot-password/">Forgot your password?</a></span></div>
</div>
</form>
</div>';
$c = str_replace('%value%',5,$c);
return $c;