【问题标题】:MySQL replaces my PHP input dataMySQL 替换了我的 PHP 输入数据
【发布时间】:2016-01-19 14:16:55
【问题描述】:

所以,我一直在尝试使用 PHP 和 MySQL 创建一个注册/登录流程。我创建了一个注册表单和一个处理页面。然后我试了一下,将电子邮件设置为a@a.com,密码设置为MyPassword

然后我检查了数据库并感到惊讶。电子邮件输入正确,可以,但密码不正确!这是我之前测试过的密码之一,而且是一个非常私人的密码。

每次我再次尝试时,都会发生同样的事情。每当我注册时,密码总是更改为我的个人密码。

问题是,在我的代码中,我在任何地方都没有那个个人密码。我只用它来测试我的注册流程一次,现在它卡在了我的数据库中!

在这里,我使用测试凭据进行了注册。密码是asd,显然是3个字母。

但是当我检查数据库时,我看到以下内容。尽管我编辑了密码,所以你看不到它,但很明显它的长度超过了 3 个字母。

这是某种我还不知道的 MySQL 重写吗?

这是注册页面的完整代码(可能有点长,请耐心等待):

<?php
session_start();
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['signUpemail'];
$password = $_POST['signUppassword'];
include("mysql_base.php");
echo "Preparing MYSQL Statement...<br>";
echo "<script>";
echo "firstPart()";
echo "function firstPart() {";
echo "document.write('Starting to process MYSQL Statement...')";
echo "window.setTimeout(secondPart(),2000)";
echo "}";
echo "function secondPart() {";
echo "document.write('Starting to stop processing MSYQL Statement...')";
echo "}";
echo "</script>";
echo "Started to proccess...<br>";
$sql = "INSERT INTO pages_accounts (email, pass, firstname, lastname, confirm) VALUES ('".$email."','".$password."','".$firstName."','".$lastName."','0')";
if ($conn->query($sql) === true){
  echo "<b>SIGNUP SUCCESS</b><br>";
  echo "SUCH HAPPINESS. WOW. MMM.<br><br>";
  echo "--Check your mail for a confirmation email. Check SPAM too!--";
  $headers = "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
  $headers .= 'From: FoxInFlame Pages<pages@foxinflame.tk>' . "\r\n";
  $message = "
  <html>
  <body>
  <center>
  <div style='background-color:orange'><h1>Confirm your Account</h1><br><h3>At FoxInFlame Pages</h3></div>
  You seem to have registered for an account at FoxInFlame Pages. Now please click on the following link to complete your registration, and start creating amazing websites!<br><a href='http://www.foxinflame.tk/pages/confirm.php?id=".$conn->insert_id."'>Click Here</a>
  </center>
  </body>
  </html>
  ";
  mail($email, "[CONFIRM] Account on FoxInFlame Pages", $message);
} else {
  echo "MUCH SADNESS. SUCH DEPRESSION. FAIL ERROR. NO RETURN.";
  echo "Error: ".$sql."<br>".$conn->error;
};
?>

【问题讨论】:

标签: php mysql login replace passwords


【解决方案1】:

您的问题将出现在include("mysql_base.php");。该文件将设置$password 以供其内部使用,这将覆盖您从$_POST 获得的$password 变量;

解决此问题的两个选项:

1 - 先打开数据库连接。

<?php
session_start();
include("mysql_base.php");

$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['signUpemail'];
$password = $_POST['signUppassword'];

2 - 使用不同的变量名:

<?php
session_start();
include("mysql_base.php");

$signup_firstName = $_POST['firstName'];
$signup_lastName = $_POST['lastName'];
$signup_email = $_POST['signUpemail'];
$signup_password = $_POST['signUppassword'];

除此之外,注册页面上的密码字段没有name="signUppassword",并且您没有SQL注入保护。

【讨论】:

  • 嗯。我会检查的。
  • 啊。工作。像一个魅力。谢谢山姆列夫。我什至原谅你骂我垃圾邮件。 (好吧,也许不是,但无论如何)。我将mysql_base.php中的变量命名为mysql_passwordmysql_username...等等...从现在开始,我需要小心命名变量...
【解决方案2】:

在你的页面上我看到了:

  <input style="color:white" type="password" name="password" required="" autocomplete="off">

所以你输入的名字是密码

但在您的代码中,您正试图获取 signUppassword

  $password = $_POST['signUppassword'];

你在某处有一些转变吗? javascript?

【讨论】:

  • 您正在查看登录部分。这可能会令人困惑。我说的是注册过程,其中密码被转换。我确定输入的名称为 signUpname 和 signUppassword。
  • 不,我正在查看 注册 表单 foxinflame.tk/pages/loginSignup.php 顺便说一下 两个 表单都使用
  • 好的。这会影响我的注册流程吗?
  • 对不起,我把名字改成了 signUppassword,但它不起作用。我尝试了 samlev's,它确实做到了,非常好,抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多