我正在尝试将注册数据存储到数据库中,但我无法理解的事情仍在发生,下面的行在我的register.php表格中,在HTML加载之前首先打印出来
query($ sql)=== TRUE){echo“新记录创建成功”; } else {echo“错误:”。 $ sql。 “ “。$ dbcon->错误;} $ dbcon-> close();}}?>
这是我的代码,我还想检查所使用的电子邮件是否已注册,在这种情况下,应该收到错误消息“电子邮件已经注册”
这是我的PHP代码:
<?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();
}
}
?>
这是我的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>
请帮助!!!
答案 0 :(得分:1)
根据评论中所见/讨论:
您将文件作为c:///file.php
而不是http://localhost/file.php
运行,因此它为什么会向您显示代码,而不是解析它。
然后mysqli_escape_string()
该函数需要传递数据库连接并作为第一个参数:
请教:
你的会话的条件陈述会给你一个误报:
if(isset($_SESSION['user'])!="")
被解释为&#34;如果设置会话数组不等于&#34; ...
与#34相反;如果会话数组已设置且不等于&#34; ...
if(isset($_SESSION['user']) && $_SESSION['user'] != '')
您对表单的编辑似乎缺少结束</form>
标记,如果此条件语句if(isset($_POST['signup']))
的元素确实包含相同的名称属性,则不知道。
另外,以下POST数组的输入也未包含在HTML表单的编辑中:
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
通过PHP检查错误,因为您已经在使用MySQL进行检查。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
脚注:
您应该在标头之后添加exit;
,否则您的代码可能希望继续执行。
header("Location: index.php");
exit;
<强>密码强>
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
关于列长的重要说明:
如果您决定使用password_hash()
或隐藏,请务必注意,如果您当前的密码列长度低于60,则需要将其更改为(或更高)。手册建议长度为255。
您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。
使用crypt()
函数也是如此。列的长度需要足够长才能容纳哈希值。
答案 1 :(得分:0)
if (password1 == password2){
必须是
if ($upass == $pass2 ){
因为脚本中没有这样的变量。您的INSERT查询必须是:
$sql = "INSERT INTO users (fullname, telephone, email, role, pass)
VALUES ('$fullName', '$tphon', '$email', '$role', '$upass')";
假设$upass
是一个字符串。