我还有另外一个问题,现在我在PHP文件中有变量需要在另一个中引用,但是它没有成功。
为了进一步说明,我在PHP文件中有这个部分:
if (isset($_REQUEST['login']) && isset($_REQUEST['password']))
establishingConnection($_REQUEST['login'], $_REQUEST['password'], $xml);
在这里,我必须提交用户名和密码才能与我正在开发的网络服务建立连接。
之后,用户可以进行添加/删除/更改链接/标签等操作。他可以更改个人数据(用户名,密码,电子邮件或删除自己的帐户)。对于任何这些操作,我需要当前登录(即他的用户名)。就像在这个例子中一样:
if (isset($_SESSION['login']))
{
if (isset($_REQUEST['password']) && isset($_REQUEST['newUsername']))
changeUsername($_SESSION['login'], $_REQUEST['password'], $_REQUEST['newUsername'], $xml);
else {
$msg = 'Some fields are missing';
message($xml, $msg, 1);
}
}
else
{
$msg = 'Please login first!';
message($xml, $msg, 1);
}
不幸的是,我无法正确导入登录数据。通过看到这条消息,我可以看到这个问题:
$msg = 'Some fields are missing';
我的主要目标是在另一个文件中引用一个PHP变量。我的JavaScript文件不负责提供登录用户名。我试图包含php文件,但没有成功。
有任何解决此问题的建议吗?
编辑:嗯,我试过我的php,但我在JavaScript脚本中发现了一些问题。我将发布负责此操作的函数,因为我不知道问题所在。
HTML:
<div id="changeUserid">
<form id="changeUseridForm">
New username: <input type="text" id="newUserid" />
<br>
Type your password to validate your action: <input type="password" id="retypePass" />
<br>
<input type="submit" value="Change" />
</form>
</div>
我的JavaScript(jQuery)函数:
$("#changeUseridForm").submit(function(){
$.ajax({
type: "GET",
url: "API/root/users/changeUsername.php",
data: {
newUsername: $("#newUserid", this).val(),
password: $("#retypePass", this).val(),
xml: 1,
},
dataType: 'xml',
success: function(xml){
if($(xml).find("success").length > 0){
alert("Username changed successfully!");
window.location.reload();
}
else if($(xml).find("error").length > 0){
alert("You have to fill all the fields!");
}
}
});
return false;
});
EDIT2:解决了更改用户名的问题。现在,我遇到的问题是我可以使用旧用户名成功登录。有什么建议吗?
答案 0 :(得分:0)
我不确定我是否完全理解您的问题,这些代码段是来自同一个文件还是单独的?你提交两种不同的html表格还是只提供一种表格?
我假设您已将HTML表单提交到一个页面,然后当您移动到另一个页面时,您想要访问这些相同的值,是吗?您无法将$ _REQUEST值从一个页面传递到另一个页面。您可以将这些值分配给某个变量,然后包含该文件,或使用会话变量来存储这些文件:
在第一个文件中执行此操作:
$password = $_REQUEST['password'];
$newUsername = $_REQUEST['newUsername'];
然后,在第二个文件中包含第一个文件并使用变量(假设第一个文件是a.php):
include "a.php";
if (isset($_SESSION['login'])){
if (isset($password) && isset($newUsername)){
changeUsername($_SESSION['login'], $password, $newUsername, $xml);
} else {
$msg = 'Some fields are missing';
message($xml, $msg, 1);
}
}
您还可以使用会话变量将数据从一个页面传递到另一个页面,只需确保在使用会话变量的每个页面的开头都有session_start()
。
注意:您还应该在使用之前验证用户提交的数据,但这是另一个主题。此外,每当有疑问时,打印/回显变量以查看传递的数据以及哪个变量是问题。
编辑(问题2):您可以使用新旧用户名登录吗?如果是,则表示您正在添加新用户(名称),而不是替换新用户的当前用户名。分享您更新帐户信息的方式(即,如果您正在使用数据库,共享您正在使用的更新查询),并且有人可能会提供帮助。
答案 1 :(得分:0)
我认为问题与Session_start()有关。在检查会话登录名和密码变量之前,请确保已包含此内容。