我正在一个网站上工作,用户可以在主页上输入用户名,电子邮件和密码来创建他们的帐户,然后点击“创建帐户”#34;它会转到一个php脚本,它会检查是否有空白,是否有用户名,等等,非常标准的东西。如果在创建帐户时出错,将用户的用户名和电子邮件重新定位到主页以将输入重新填入主页是否不安全?
答案 0 :(得分:0)
您的网址绝不应包含用户名和电子邮件等数据。我建议你改用会话。
您要重定向的页面(让我们假设它是check.php),请确保将数据和状态存储在会话中。
检查页面:
// check.php
/* If sign up fails */
$_SESSION['reg_fail'] = array(
'username' => ....,
'email' => '....
);
header(Location:.....); // Redirecting to the home page
首页:
session_start(); // Write this on top of the page.
/* Other code */
<input name="username" value=<?php echo @$_SESSION['reg_fail']['username'] ?>>
<input name="email" value=<?php echo @$_SESSION['reg_fail']['email'] ?>>
答案 1 :(得分:0)
对于您的具体案例,会议最有效:
session_start();
...
//if username or email taken, save in session
$_SESSION['taken_name'] = $username;
$_SESSION['taken_email'] = $email;
//redirect user
header('Location: home.php');
然后在 home.php
中检索值session_start();
...
$username = $_SESSION['taken_name']? : null;
$email = $_SESSION['email']? : null;
然后,您可以在主页上的任何地方使用$username
和$email
。
一般来说,只要这是您网站上的公开信息,就可以在网址中包含用户名。在大多数情况下,这是向公众显示的信息(用户如何看到彼此)。许多最大的网站(包括facebook
和twitter
)甚至允许用户使用其名称创建自定义网址。如果您正在运行的网站甚至用户名都是私有的(用户不会看到另一个用户),那么请不要将其放在网址中。
电子邮件是另一回事。电子邮件地址通常被视为私有,因此我不会将其包含在URL中。随着URL链接一直被废弃,它会向用户开放更多垃圾邮件。
答案 2 :(得分:0)
执行此操作的理想方法是在提交表单后使用$_GET
方法。在输入标记上使用value
属性。在URL中包含任何敏感信息都不安全。
实施例
<input type="text" value="<?php if(isset($_POST['submit'])) { echo $_GET['input_name']; } ?>"
这是假设您的PHP脚本在验证后重定向以显示任何错误。