【发布时间】:2016-11-22 07:24:44
【问题描述】:
我已经在托管网站上实现了数据库,而不是在使用 MySQL 的 mac 上。 我使用数据库在 IOS 应用程序中注册/登录。数据库正在使用 PHP 代码进行连接。
这是 PHP 代码:
<?php
header('Content-type: application/json');
if($_POST) {
$Nome = $_POST['nome'];
$Cognome = $_POST['cognome'];
$Email = $_POST['email'];
$DOB = $_POST['dob'];
$password = $_POST['password'];
$c_password = $_POST['c_password'];
if($_POST['email']) {
if ( $password == $c_password ) {
$db_name = '****************';
$db_user = '****************';
$db_password = '*********************';
$server_url = 'localhost';
$mysqli = new mysqli('localhost', $db_user, $db_name, $db_password);
if (mysqli_connect_errno()) {
error_log("Connect failed: " . mysqli_connect_error());
echo '{"success":0,"error_message":"' . mysqli_connect_error() . '"}';
} else {
$stmt = $mysqli->prepare("INSERT INTO Users (nome, cognome, email, dob, password, c_password) VALUES (?, ?, ?, ?, ?, ?)");
$password = md5($password);
$stmt->bind_param('ssssss', $nome, $cognome, $email, $dob, $password, $c_password);
$stmt->execute();
if ($stmt->error) {error_log("Error: " . $stmt->error); }
$success = $stmt->affected_rows;
$stmt->close();
$mysqli->close();
error_log("Success: $success");
if ($success > 0) {
error_log("User '$email' created.");
echo '{"success":1}';
} else {
echo '{"success":0,"error_message":"Email Exist."}';
}
}
} else {
echo '{"success":0,"error_message":"Passwords does not match."}';
}
} else {
echo '{"success":0,"error_message":"Invalid Email."}';
}
}else {
echo '{"success":0,"error_message":"Invalid Data."}';
}
?>
这是我在尝试数据库时看到的错误:
(HY000/2002): 无法通过 /srv/disk8/2129310/www/haer2jkqlgjql.co 中的套接字 '/var/run/mysqld/mysqld.sock' (2) 连接到本地 MySQL 服务器.nf/signUp.php 第 20 行
这个错误告诉我有错误或第20行有错误,但我不明白原因。
【问题讨论】:
-
你真的不应该使用MD5 password hashes,你真的应该使用PHP的built-in functions来处理密码安全。确保你 don't escape passwords 或在散列之前对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。