运行表单脚本时php pdo空白页面

时间:2015-12-11 00:22:09

标签: php mysql pdo

我正在尝试填写注册表单,以便用户注册该网站。我之前使用的是mysql_*,但得到建议mysqli_*pdo会更好,因为{7}在PHP7中被折旧了。所以,这是我的代码。每次执行此代码时,我只会得到一个空白页面,我的错误'消息不会显示,也不会创建新记录!'信息。我在网上看了一下,无法找到这个脚本的问题。

mysql_*

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

完整地回答我的回答。这里有很多东西可以搞乱。

你没有收到错误,因为你没有在PHP方面检查它们。

首先,您看到了recovery-email列?

它包含一个连字符,MySQL正在将其解释为recovery MINUS email,认为你想要做数学。

将它包裹在刻度线中:

(username, firstname, middlename, surname, email, `recovery-email`, password)

或使用下划线recovery_email 重命名(除非是拼写错误)。

你没有看到它的语法错误,可能是由于第一个条件语句而且永远不会在那里开始。

在测试期间使用错误检查:

另见:

另外,请确保您的表单及其元素不会让您失望。您的表单需要使用POST方法,并且所有输入都带有它们的名称属性。

即:<input type="text" name="username">等。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

可能发生冲突:

但是,此处$username, $password中的变量可能存在冲突,其中您使用的是POST数组和登录凭据的相同变量。

另一件事是您的代码依赖于此条件语句:

if (isset($_POST['submit'])){...}

因此,这也可能是您获得空白屏幕的原因,和/或您有语法错误。 (使用错误报告)。

else{ echo "Submit button not set..."; }上方添加$conn = null;

如果属于那个,那么你就会知道该怎么做;输入可能没有submit名称属性。

即:

<input type="submit" name="submit" value="SUBMIT">

或您的提交按钮可能是<button>,而不是type="submit"类型。

这是未知的,因为您没有在您的问题中发布HTML表单。

脚注:

即使您使用的是PDO,您的代码仍然可以使用SQL injection

使用准备好的声明

<强>密码

我还注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:

最终说明:

Logan在他的回答中指出,使用条件!empty()是检查空字段的更好方法,但它不会导致你得到空白屏幕。

答案 1 :(得分:0)

您应该使用bindParam()之类的内容,而不是将变量直接放入查询中。

$sql->bindParam(':username', $_POST["username"], PDO::PARAM_STR, 12);

在查询中对其他变量进行绑定。

而不是

(!$_POST['username'] || !$_POST['firstname'] || !$_POST['surname'] || !$_POST['email'] || !$_POST['password'])

应该是

(empty($_POST['username']) || empty($_POST['firstname']) || empty($_POST['surname']) || empty($_POST['email']) || empty($_POST['password']))/* DO IT FOR THE REST OF THE VARIABLES */

您还应该考虑哈希密码。您可以尝试简单但可靠的password_hash()