无法将数据插入我的SQL

时间:2015-11-11 04:06:54

标签: php mysql insert

我正在为我的大学编写项目,我可以从my_sql_query手动插入数据,但无法从某个字段插入。

这是我的代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>

<script type="text/javascript">
function checkForm(){
    if(document.regForm.name.value=='')
    alert('لطفا نام خود را وارد کنید')
    else if(document.regForm.username.value=='')
    alert('لطفا نام کاربری خود را وارد کنید')
    else if(document.regForm.password.value=='')
    alert('لطفا رمز عبور خود را وارد کنید')
    else if(document.regForm.rePassword.value=='')
    alert('لطفا عبور خود را دوباره وارد کنید')
    else if(document.regForm.rePassword.value!=document.regForm.password.value)
    alert('رمز عبور وارد شده یکسان نیست')

    else if(document.regForm.email.value=='')
    alert('لطفا ایمیل خود را وارد کنید')
    else
    document.regForm.submit();
}
</script>
<link rel="stylesheet" href="css/bootstrap.css">
</head>

<body>

<form action="" method="post" dir="rtl" name="regForm" >
<div class="form-group">
<br> <br> <br> <br>
<label >name</label>
<input class="form-control"  type="text" name="name" placeholder="حسین محمودی">
</div>
<div class="form-group">
<label >username</label>
<input class="form-control" type="text" name="username" placeholder="iHMahmoodi">
</div>
<div class="form-group">
<label >password</label>
<input class="form-control" type="password" name="password" placeholder="رمز">
</div>
<div class="form-group">
<label >repass</label>
<input class="form-control" type="password" name="rePassword" placeholder="تکرار رمز عبور">
</div>
<div class="form-group">
<label >email</label>
<input class="form-control" type="email" name="email" placeholder="ایمیل">
</div>
<input type="submit" class="btn btn-success"  onClick="checkForm()" name="reg" value="register">

</div>


</form>
<?php
connect();
$r=mysql_query("insert into login() values('','$name','$username','$password','$email','u')");
connect();
$name=$_POST['name'];
$username=$_POST['username'];
$password=$_POST['password'];
$rePassword=$_POST['rePassword'];
$email=$_POST['email'];
if($name && $username && $password && $email)
{
connect();
$r=mysql_query("insert into login() values('','$name','$username','$password','$email','u')");

if($r)
echo '<script>alert("اطلاعات شما ثبت شد "); </script>';
}
?>
</body>
</html>

我使用bootstrap进行造型 我的connect()代码是:

<?php
function connect()
{
   $db='ihmahmoodi';
    $connect=mysql_connect('localhost','root','');
    mysql_select_db($db,$connect);
    mysql_query('SET NAMES utf8');

}
?>

当我点击注册按钮时,注意到发生并且页面只是刷新!
问题在哪里?

1 个答案:

答案 0 :(得分:1)

您应该在使用之前定义变量,如下所示:

connect();
$name=$_POST['name'];
$username=$_POST['username'];
$password=$_POST['password'];
$rePassword=$_POST['rePassword'];
$email=$_POST['email'];
$r=mysql_query("insert into login values('','$name','$username','$password','$email','u')");

很少有事情需要注意:

  1. 始终检查您尝试访问的$_POST变量是否已设置。否则,您将遇到错误。

    if(isset($_POST['name']) && isset($_POST['username']) && isset($_POST['password']) && isset($_POST['rePassword']) && isset($_POST['email'])) { // do stuff here } else { // show error here }

  2. 执行此类代码会导致SQL injection vulnerability。始终假设用户提供的任何输入都是不值得信任的,并进行适当的验证。

    绝对基本的是简单地逃避用户输入:

    connect(); $name=$_POST['name']; $username=mysql_escape_string($_POST['username']); $password=mysql_escape_string($_POST['password']); $rePassword=mysql_escape_string($_POST['rePassword']); $email=mysql_escape_string($_POST['email']);

  3. 永远不要使用root用户连接到数据库,因为它会授予攻击者对数据库的无限制访问权限。对于将访问您的数据库的每个应用程序始终setup a dedicated user

  4. 虽然从学习的角度来看代码是好的,但最好停止使用mysql_函数集they have been deprecated。使用mysqli类更好,因为它支持parameterized queries that prevent sql injection