这里是php的新功能,如果解决方案超级简单,我深表歉意。我正在使用密码重置页面,它将是用户单击带有令牌的电子邮件后进入的页面。问题是表单没有发送$ token的值,而是发送了字符串。
class object;
object* getObject();
void doSomething(object* o = getObject());
class object{
public:
int num = 0;
};
object* getObject(){
return new object();
}
void doSomething(object* o){
o->num = 5;
delete o;
}
int main(){}
答案 0 :(得分:0)
只是一个建议...不要回显htmltags ...不是一个好习惯...除了回声,您可以这样做。关于令牌的问题将像这样解决。
<?php
if(isset($_GET["email"]) && isset($_GET["token"])) {
$connection = new mysqli("localhost", "USER", "PASSWORD", "USERDB");
$email = $connection->real_escape_string($_GET["email"]);
$token = $connection->real_escape_string($_GET["token"]);
$data = $connection->query("SELECT user_id FROM users WHERE user_email='$email' AND user_token='$token'");
if ($data->num_rows > 0) {
?>
<html>
<head>
<meta charset="UTF-8">
<title>Change Password</title>
<link rel="stylesheet" href="../css/style.css" media="screen" type="text/css" />
</head>
<body>
<div class="reset">
<h1>Password reset</h1>
<form action="anotherpage.php" method="POST">
<input type="password" name="pwd" placeholder="Password">
<input type="hidden" name="token" value="<?php echo $token;?>">
<input type="submit" name="submit" class="submit" value="Update">
</form>
</body>
</html>
<?php
} else {
echo "Please check your link!";
}
} else {
header("Location: ../");
exit();
}
?>
答案 1 :(得分:0)
它正在发送字符串$token
,因为PHP不会解析单引号('
)中的变量。您必须使用双引号("
),然后转义其他双引号(使用\
)或在回显的代码中使用单引号。您也可以使用
<input type="hidden" name="token" value="'.$token.'">
虽然上述方法可行,但我建议您发送不带回显的表单代码。