从php插入mysql数据库
我已经用dovecot postfix和mysql创建了一个邮件服务器。 用户应该能够通过从php插入mysql数据库,php,mysql,email,hash,Php,Mysql,Email,Hash,我已经用dovecot postfix和mysql创建了一个邮件服务器。 用户应该能够通过php网页创建新的邮件地址,该网页将数据插入mysql数据库。 它也会将其插入数据库,但与邮件服务器的连接无法使用该凭据。 当我自己将同样的东西插入数据库时,它可以工作,你能看一下代码并告诉我可能有什么问题吗? 我认为它与使用doveadm生成密码哈希有关 <?php ob_start(); session_start(); if( isset($_SESSION['user'
php网页
创建新的邮件地址,该网页将数据插入mysql数据库
。
它也会将其插入数据库,但与邮件服务器的连接无法使用该凭据。
当我自己将同样的东西插入数据库时,它可以工作,你能看一下代码并告诉我可能有什么问题吗?
我认为它与使用doveadm生成密码哈希有关
<?php
ob_start();
session_start();
if( isset($_SESSION['user'])!="" ){
header("Location: home.php");
}
include_once 'dbconnect.php';
$error = false;
if ( isset($_POST['btn-signup']) ) {
// clean user inputs to prevent sql injections
$name = trim($_POST['name']);
$name = strip_tags($name);
$name = htmlspecialchars($name);
$email = trim($_POST['email']);
$email = strip_tags($email);
$email = htmlspecialchars($email);
$pass = trim($_POST['pass']);
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass);
// basic name validation
if (empty($name)) {
$error = true;
$nameError = "Please enter your full name.";
} else if (strlen($name) < 3) {
$error = true;
$nameError = "Name must have atleat 3 characters.";
} else {
// check email exist or not
$query = "SELECT username FROM accounts WHERE username='$name'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
if($count!=0){
$error = true;
$nameError = "Benutzeraccount existiert schon.";
}
}
//basic email validation
if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$error = true;
$emailError = "Please enter valid email address.";
} else {
// check email exist or not
$query = "SELECT resetmail FROM accounts WHERE resetmail='$email'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
if($count!=0){
$error = true;
$emailError = "Kontakt E-Mail Adresse bereits in Verwendung.";
}
}
// password validation
if (empty($pass)){
$error = true;
$passError = "Please enter password.";
} else if(strlen($pass) < 6) {
$error = true;
$passError = "Password must have atleast 6 characters.";
}
// password encrypt using SHA256();
$password = shell_exec('/usr/bin/doveadm pw -s SHA512-CRYPT -p '. $pass);
// if there's no error, continue to signup
if( !$error ) {
$query = "INSERT INTO accounts(username,domain,at,complete,resetmail,password,quota,enabled,sendonly) VALUES('$name','chillihorse.de','@','test','$email','$password','2048','1','0')";
$res = mysql_query($query);
if ($res) {
$errTyp = "success";
$errMSG = "Successfully registered, you may login now";
unset($name);
unset($email);
unset($pass);
} else {
$errTyp = "danger";
$errMSG = "Something went wrong, try again later...";
}
}
}
?>
每次在新代码中使用数据库扩展时,它都会被弃用,并且已经存在多年,在PHP7中永远消失。如果你只是在学习PHP,那么就把精力花在学习PDO
或mysqli
数据库扩展和准备好的语句上。您的脚本有可能会出现问题,请不要使用您自己的密码散列。PHP提供并请使用它们。如果您使用的是5.5之前的PHP版本,而不是在这里打印无用的错误消息,那么这里有一些示例代码>将其更改为$errMSG=mysql\u error()
然后您将看到是否/真正失败的地方将其更改为“$errMSG=mysql_error();”,但现在,每次在新代码中使用数据库扩展时,都不会再打印错误。它已被弃用多年,并且在PHP7中永远消失。如果你只是在学习PHP,那么就把精力花在学习PDO
或mysqli
数据库扩展和准备好的语句上。您的脚本有可能会出现问题,请不要使用您自己的密码散列。PHP提供并请使用它们。如果您使用的是5.5之前的PHP版本,而不是在这里打印无用的错误消息,那么这里有一些示例代码>将其更改为$errMSG=mysql\u error()代码>然后您将看到是否/真正失败的地方将其更改为“$errMSG=mysql_error();”,但现在不再打印错误