好吧,我最初发布了一个关于php的问题,但后来才发现它可能是服务器配置问题,我对此知之甚少。我保留了php脚本以防万一,我希望有人可能对此有一些指示 - 我已经检查了权限(755)。
"NetworkError: 500 Internal Server Error - http://localhost/register.php?name=uname&password=upassword"
我希望有人在这里能够发现我的错误 - 对不起,如果这很明显我就一直在学习。
<?php
define('USER', 'root');
define('PASS', 'password');
$dbh = new PDO('mysql:host=localhost;dbname=users', USER, PASS);
$uname = $_POST['uname'];
$upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT);
$query = 'INSERT INTO `users` (`name`, `password`) VALUES (?,?)';
$query->bind_param($uname, $upassword);
$queryResults = $dbh->prepare($query);
$queryResults->execute();
$queryResults = null;
$dbh = null; // close the connection
&GT;
这一直给我一个500内部服务器错误,指示php脚本,(在firefox的firebug中),我无法弄清楚我哪里出错了。如果需要,我也可以发布ajax。
答案 0 :(得分:3)
您正在使用查询字符串http://localhost/register.php?name=uname&password=upassword"
。它纯粹是一种GET方法。
您必须检查GET方法是否存在,然后您需要访问GET方法数据。
$uname = "";
if(isset($_GET['uname'])) {
$uname = $_GET['uname'];
}
$upassword = "";
if(isset($_GET['password'])) {
$upassword = $_GET['password'];
}
if(($uname != "") && ($upassword != "")) {
$upassword = password_hash($upassword, PASSWORD_DEFAULT)
$query = sprintf("INSERT INTO `users` (`name`, `password`) VALUES (%s, %s)", $uname, $upassword);
----- Statements ------
}
答案 1 :(得分:1)
我不知道为什么它会抛出500错误,但你的代码显然有错误。
您的$query
变量是字符串,但没有$query->bind_param()
方法。我假设您正在尝试这样做(bind_param
是MySqli而bindParam
是PDO):
$dbh->prepare($query);
$sth->bindParam($uname, $upassword);
此外,由于您通过网址传递变量,因此您必须使用$_GET
而不是$_POST
。只需确保首先检查$_GET
中是否存在这些参数,然后再使用它们:
if (!empty($_GET['name'])) {
$uname = $_GET['name'];
}
注意 ?name=uname&password=upassword
表示变量名称为name
和password
。它的值为$_GET['name'] = 'uname'
/ $_GET['password'] = 'upassword'
。
永远不要使用$ _GET传递用户名和密码,因为它不安全。最好使用一些安全文件来保存它们。