Php 我的代码不会将注册数据添加到数据库中
我试图将注册数据存储到数据库中,但一些我不太理解的事情一直在发生,我的register.php表单下面的行在加载HTML之前首先打印出来 query($sql)==TRUE){echo“新记录已成功创建”}否则{echo”错误:“.$sql” “$dbcon->error;}$dbcon->close();}}} 这是我的代码,我还想检查正在使用的电子邮件是否已注册,在这种情况下,应该会出现一个错误,显示“电子邮件已注册” 以下是我的PHP代码:Php 我的代码不会将注册数据添加到数据库中,php,mysql,Php,Mysql,我试图将注册数据存储到数据库中,但一些我不太理解的事情一直在发生,我的register.php表单下面的行在加载HTML之前首先打印出来 query($sql)==TRUE){echo“新记录已成功创建”}否则{echo”错误:“.$sql” “$dbcon->error;}$dbcon->close();}}} 这是我的代码,我还想检查正在使用的电子邮件是否已注册,在这种情况下,应该会出现一个错误,显示“电子邮件已注册” 以下是我的PHP代码: <?php session_start()
<?php
session_start();
if(isset($_SESSION['user'])!="")
{
header("Location: index.php");
}
include_once 'dbconnect.php';
if(isset($_POST['signup']))
{
//performing verfication
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
if ($upass == $pass2){
$fullName=mysqli_escape_string($_POST['fullName']);
$tphon=mysqli_escape_string($_POST['telephone']);
$email=mysqli_escape_string($_POST['email']);
$role=mysqli_escape_string($_POST['role']);
$upass=mysqli_escape_string($upass);
$pass2=mysqli_escape_string($pass2);
$upass = crypt($upass);
$sql = "INSERT INTO users (fullname, telephone, email, role, pass)
VALUES ('$fullName', '$tphon', '$email', '$role', '$upass')";
if ($dbcon->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $dbcon->error;
}
$dbcon->close();
}
}
?>
一定是
if ($upass == $pass2 ){
因为脚本中没有这样的变量。您的插入查询必须是:
$sql = "INSERT INTO users (fullname, telephone, email, role, pass)
VALUES ('$fullName', '$tphon', '$email', '$role', '$upass')";
假设$upass
是一个字符串。如评论中所述:
您运行的文件是c:///file.php
而不是http://localhost/file.php
,因此它向您显示代码,而不是解析代码
然后mysqli\u escape\u string()
该函数需要传递数据库连接,并作为第一个参数:
咨询:
会话的条件语句将给您一个假阳性:
if(isset($_SESSION['user'])!="")
这被解释为“如果设置会话数组不等于”
与“如果会话数组已设置且不等于”
您对表单的编辑似乎缺少结束标记
,如果此条件语句的元素if(isset($\u POST['signup'))
确实具有相同的name属性,则该标记未知
此外,以下POST数组的输入也未包含在HTML表单的编辑中:
<form id="wizardForm" action="register.php" method="POST">
<div class="row m-b-lg">
<div class="col-md-4 center">
<div class="login-box">
<a href="register.php" class="logo-name text-lg text-center">Timewise</a>
<p class="text-center m-t-md">Enter the following Details to Register</p>
</div>
<div class="form-group col-md-12">
<label for="exampleInputName">Full Name</label>
<input type="text" class="form-control" name="fullName" id="exampleInputName" placeholder="Full Name">
</div>
<div class="form-group col-md-12">
<label for="telephone">Telephone</label>
<input type="text" class="form-control" name="telephone" id="telephone" placeholder="Telephone" >
</div>
<div class="form-group col-md-12">
<label for="exampleInputEmail">Email Address</label>
<input type="email" class="form-control" name="email" id="exampleInputEmail" placeholder="Enter email" >
</div>
<div class="form-group col-md-12">
<label for="role">Role</label>
<input type="radio" name="role" value="N" /> NORMAL <input type="radio" name="role" value="C" /> COMPANY <br/>
</div>
<div class="form-group col-md-12">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" name="upass" id="exampleInputPassword1" placeholder="Password" >
</div>
<div class="form-group col-md-12">
<label for="exampleInputPassword2">Confirm Password</label>
<input type="password" class="form-control" name="pass2" id="exampleInputPassword2" placeholder="Confirm Password">
</div>
<div class="form-group col-md-12">
<input type="submit" name="signup" value="Submit" class="btn btn-success btn-block">
</div>
<p class="no-s text-center">2015 © Timewise Errand Services</p>
</div>
</div>
</form>
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
通过PHP检查错误,因为您已经在使用MySQL进行检查
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
密码
使用以下选项之一:
- PHP5.5的函数
- 兼容性包(如果PHP<5.5)
其他链接:
关于列长度的重要旁注:
如果您决定使用password\u hash()
或crypt,请务必注意,如果当前密码列的长度小于60,则需要将其更改为60(或更高)。手册建议长度为255
您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败
使用crypt()
函数也是如此。列的长度需要足够长才能容纳散列
您现在得到的是什么??您得到的是什么错误??crypt($upass);这需要声明为$upass=crypt($upass);请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,您可以使用密码\u hash()
。太正确了Ralph。太对了@Fred ii感谢您看到我更正并编辑了问题,但同样的事情仍在发生!我已经更改了“$upass”变量上的错误,但它不起作用。它仍然没有将我的数据添加到数据库中,我得到以下代码:query($sql)==TRUE){echo“新记录创建成功”;}否则{echo”错误:“.$sql.”“$dbcon->错误;}$dbcon->close();}?>。在HTML加载之前仍然显示我已经按照您的答案解决了其余的问题,但是我似乎没有得到关于如何使用{mysqli_escape_string()}的答案,我已经读过了,但是我真的什么都没有得到!!!你能帮我知道它应该是什么样子吗?@johnexamples:$var=mysqli\u real\u escape\u string($connection,$\u POST['var')代码>-$var=mysqli\u real\u escape\u字符串($connection,$var)代码>按照手册,对所有想要逃跑的人都这样做。谢谢。再一次@Fred ii一切终于好了
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
header("Location: index.php");
exit;