【问题标题】:Php form submission-Errorphp表单提交-错误
【发布时间】:2014-05-25 13:52:30
【问题描述】:
<?php

include ("db.php");

if (isset($_POST['register'])) {

echo $name = ($_POST["name"]);
echo $email = ($_POST["email"]);
echo $uname = ($_POST["uname"]);
echo $password = ($_POST["pass"]);


 $result =  mysql_query($con,'SELECT * from company_profile where user_name = "'.$uname.'" or email = "'.$email.'"');
       if(mysql_num_rows($result) > 0){
          echo "Username or email already exists.";
       }else{
           $query = mysql_query($con,"INSERT INTO company_profile(user_name, password, company_name, email, phone, country, activation_string) VALUES ('$uname','$password','$name','$email','','','')");

         if($query){
            echo "data are inserted succesfully.";
         }else{
          echo "failed to insert data.";
         }
     }

}


  ?>    

HTML 表单

<form action="register.php" method="post" id="reg" onsubmit='return validate();'>
                 Company Name: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                 <input type="text"  class="inputs" name="name" id="name" /><br />
                 Email:     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                 <input type="text" class="inputs" name="email" id="txtEmail" /><br />
                 User name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                 <input type="text"  class="inputs"  name="uname" id="uname"/><br />
                  Password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                  <input type="password" class="inputs" name="pass" id="pass1"/><br />
                  Conferm Password: &nbsp;&nbsp;&nbsp;
                  <input type="password" class="inputs" name="cpass"  id="pass2"/><br /><br /> 
                 <input type="submit" value="Register" class="button" />
                  </form>

尝试检查数据库中是否存在用户名或电子邮件,如果存在则警告用户,如果没有向数据库插入值。该代码对我不起作用。没有错误没有回声没有插入。有什么解决办法吗?

【问题讨论】:

  • 你可以为此添加html表单吗?
  • 什么是行不通的,除了你很容易被注射
  • 你的数据库连接创建成功了吗?
  • 如果 $_POST["name"]$_POST["email"]$_POST["uname"]$_POST["pass"] 未设置怎么办?你没有检查那些,为什么?
  • 不相关,但那些非破坏空间的人是怎么回事?

标签: php html mysql phpmyadmin


【解决方案1】:

您没有名称为register的字段

关于这个

if (isset($_POST['register'])) {

它永远不会评估为真。

<input type="submit" value="Register" class="button" />

需要名称属性name="register"

另外:

http://php.net/mysql_query

您的参数顺序错误。但是,强烈不鼓励使用 mysql_*。它是一个过时的数据库 API,有很多漏洞。改用 mysqli 或 PDO

【讨论】:

    【解决方案2】:

    您的第一次检查 isset($_POST['register']) 总是错误的,因为您的表单中没有使用 name="register" 输入

    你也应该修复你的查询,$con 应该是第二个参数。

    请记住,您的代码极易受到攻击,请勿将其发布在除本地主机之外的服务器上

    【讨论】:

    • $con 根据官方mysql_query doc 不应该是第一个参数
    【解决方案3】:

    试试这个:-

    $result =  mysql_query('SELECT * from company_profile where user_name = "'.$uname.'" or email = "'.$email.'"',$con);
    

    mysql_query

    【讨论】:

      【解决方案4】:

      当你使用 mysql_query 时,链接标识符应该是第二个参数

      $result =  mysql_query('SELECT * from company_profile where user_name = "'.$uname.'" or email = "'.$email.'"', $con);
      

      【讨论】:

        【解决方案5】:

        你把自己弄得太复杂了……

        首先,要检查用户,在表单提交时这样做:

        var_dump(mysql_num_rows(mysql_query("select bla bla where username=`{$_GET['username']}`")));
        //by bla bla i mean primary key, don't select *, affects performance.
        

        另外,请看这个,你的语法有错误...看看mysql_query的正确参数

        http://ro1.php.net/mysql_query

        在您设置查询并进行上述测试并确定其是否良好后,您可以将上面的 3-4 行剪成 1 如果这样的行

        if(mysql_num_rows(mysql_query("select bla bla where username=`{$_GET['username']}`"))) { //code here
        }
        

        【讨论】:

          【解决方案6】:

          在 INSERT 查询中尝试不使用 $con

          $query = mysql_query("INSERT INTO company_profile
                                  (
                                   user_name,    password, 
                                   company_name, email,     
                                   phone,        country, 
                                   activation_string
                                   ) 
                                VALUES 
                                  (
                                   '$uname',  '$password',
                                   '$name',   '$email',
                                   '',        '',
                                   ''
                                   )");
          

          【讨论】:

            【解决方案7】:

            您需要为输入字段指定名称并检查:-

            <input type="submit" name="register" value="register">
            

            <button type="submit" name="register">Register</buton>
            

            【讨论】:

              猜你喜欢
              • 2019-03-12
              • 1970-01-01
              • 2016-11-10
              • 1970-01-01
              • 1970-01-01
              • 2017-08-30
              • 1970-01-01
              • 1970-01-01
              • 2013-02-17
              相关资源
              最近更新 更多