如何从另一个php页面更改一个页面的标签文本?

时间:2013-04-16 15:11:05

标签: php javascript html dom

问题是:我正在构建一个简单的登录php页面,用户应输入用户名和密码,然后单击“登录”按钮。此按钮将输入的值提交到另一个处理数据库的php页面,并确保用户已注册。现在,如果他/她没有注册,则页面返回登录页面,但在此之前,它会更改某些标签的文本以通知用户输入的用户名或密码错误。

我的问题是:第二个php页面无法访问第一个元素!

这是我到目前为止使用的代码! 第二个php页面:名为LoginSubmit.php:

if($row = mysqli_fetch_array($result))
{
    echo "<meta http-equiv='refresh' content='0;URL=../Home.php'>";
}
else
{
    echo"<script type='text/javascript'>";
echo"parent.document.getElementById('FailureText').innerHTML = 'Yours user name or password are wrong!!';";
echo "</script>";
echo "<meta http-equiv='refresh' content='0;URL=../Login.php'>";
}

在第一页(称为Login.php)中,标签的定义形式如下:

<td align="center" class="LiteralProb" colspan="2" style="color:Red;">
    <label ID="FailureText"></label>
</td>

它是空的并且似乎是不存在的标签,但是当发生登录错误时,应该在其上显示给用户的消息!

任何帮助,拜托! :) ??

3 个答案:

答案 0 :(得分:1)

将值存储为会话中的某种“ flash消息”。在LoginSubmit.php中使用:

// at the top of your script
session_start();

// when you know an error occurred
$_SESSION['failure_message'] = 'Yours user name or password are wrong!!';

在另一页上使用:

// at the top of your script
session_start();

// in your HTML part
<label ID="FailureText">
    <?php print ( isset($_SESSION['failure_message']) ? $_SESSION['failure_message'] : '' ); ?>
</label>

// at the bottom of your script remove the value from the session again
// to avoid that it's displayed twice
unset($_SESSION['failure_message']);

答案 1 :(得分:1)

您的登录页面不是简单的; - )

这个怎么样?

if (!$validLogin) {
    header('Location: http://www.example.com/login?err');
    exit;
}

......和:

<? if( isset($_GET['err']) ){ ?>
    <div>Invalid username/password</div>
<? } ?>

答案 2 :(得分:1)

这可以通过某些不同的方式完成:

1-你可以使用会话变量来存储你想在php脚本之间共享的值:

session_start();
$_SESSION['val1']=$value1; //set the value

你可以像这样检索它:

//receive on the other script
session_start();
$value1=$_SESSION['val1'];

2-您可以在将用户发送到登录脚本时使用GET(URL)传递变量。

header("location: first_script_url?error=some_error_message");

您可以在登录脚本上检索它:

$err_msg=$_GET['error'];

3-您可以使用AJAX进行登录过程,因此您不是将用户从一个脚本重定向到另一个脚本,而是调用第二个脚本,并根据第二个脚本返回值告诉用户是否存在有任何错误:

使用Jquery,如果我们传递用户信息,最好使用POST,也最好使用HTTPS(无论选择哪种方法都应该这样做),或者至少对密码使用加密功能(这个不是100%安全):

$.post("second_url.php", {user: username, pass: password}), 
function(data){
     //data contains anything second_url.php echoed. So you want to echo a 1 for example if everything went ok.
     if(data == 1){
           //OK
     }else{
           //Something went wrong, show the user some error.
     }
});

用户永远不会离开第一个脚本,因此您拥有javascript / Jquery中的所有变量。