Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 预防MySQL注入_Php_Html_Mysql_Database Connection - Fatal编程技术网

Php 预防MySQL注入

Php 预防MySQL注入,php,html,mysql,database-connection,Php,Html,Mysql,Database Connection,我是php的新手,我很难保护我的代码不受MySQL注入的影响。我的代码所做的是从表单中获取已提交的信息,然后将其插入数据库。我不知道该把保护装置放在哪里。有人能帮我吗。非常感谢你。这是我的密码` 亲爱的,请转到Php PDO这里是链接 PDO比Mysql好得多,速度也快得多,您应该知道,php中的Mysql现在是obslete,而MySQLi现在是在MySQLi中的php mind(i)中引入的。我个人更喜欢PDO。你可以浏览许多在线文章 不要使用不推荐使用的mysql。至少用mysqli_

我是php的新手,我很难保护我的代码不受MySQL注入的影响。我的代码所做的是从表单中获取已提交的信息,然后将其插入数据库。我不知道该把保护装置放在哪里。有人能帮我吗。非常感谢你。这是我的密码`


亲爱的,请转到Php PDO这里是链接

PDO比Mysql好得多,速度也快得多,您应该知道,php中的Mysql现在是obslete,而MySQLi现在是在MySQLi中的php mind(i)中引入的。我个人更喜欢PDO。你可以浏览许多在线文章

  • 不要使用不推荐使用的mysql。至少用mysqli_*equality替换所有调用(或者使用PDO,这对真正的初学者来说可能有点困难,但如果项目可能更改数据库类型,那么您可能值得这么做)

  • 使用事先准备好的陈述。您需要的全部内容都在php文档中:

  • 第一步 立即停止使用mysql\u查询。在20世纪90年代末的幼稚时代,SQL注入错误并没有真正被认为是一个问题

    步骤2 ,只需约30分钟即可提取。使用占位符方法插入数据,并遵守规则。当你懒惰的时候,你会犯错误,而现在的错误会带来巨大的后果

    步骤3 停止编写直接SQL代码,而是花时间学习一个简单的方法,这样你就不必浪费一天的时间去做低级的事情,而这些都可以为你解决

    不过,别担心。承认自己有问题是解决问题的第一步,对吗?

    使用事先准备好的陈述 他们首先发送一个带有占位符的查询版本。已验证并准备好查询。如果成功,您可以发送数据库将安全插入到准备好的查询中的值

    有三种选择:




    我不打算举一个例子,因为其他两种方法要优越得多。

    首先,停止使用
    mysql\u*
    函数,切换到
    PDO
    mysqli\u*
    你是否用谷歌搜索过这个或做过任何类型的研究,你会发现,使用不推荐的
    MySQL\uquot
    函数在互联网上随处可见。我怀疑你在这个问题上花了超过3分钟。我看到一个
    信用卡
    字段;哇!我(强烈)建议你花3个“小时”,以便充分研究和了解你自己在做什么。上面由jeroen给出的链接是一个开始,你也可以通过阅读此链接来获益=>并且为了语法起见,这个词是“客户”而不是“客户”-“客户”是指给人们穿衣服或给人们提供“服装”的人。万圣节结束了,除非你要供应给想要的圣诞老人。请不要用“plz”。谢谢这不是给你最好的朋友发的短信,而是许多人使用的共享资源。“承认你有问题是解决问题的第一步”——可能伤害最大的是“恢复”,这可能需要时间。PDO的
    execute
    支持命名参数,这些参数通常比一堆问号容易阅读和调试:
    值(:name)
    执行(数组(“:name”=>$name))
    <?php
    $db_host="localhost";  
    $db_uname="regina_rainier";    
    $db_pass="rainier1990"; 
    $db_name="regina_testdatabase";  
    $url = 'home.php';
    
    $con=@mysql_connect($db_host,$db_uname,$db_pass);  
    // Check connection
    if (!$con)
    {
    echo "<br />";
    die('Could not connect: ' . mysql_error());
    }
    else{
    echo "<br />";
    }
    mysql_select_db($db_name) or die("cannot find database"); 
    echo "<br />";
    
    
    
    $sql="INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state,
     postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
    VALUES 
    ('$_POST[costumer_ID]',  '$_POST[first_name]', '$_POST[last_name]',     '$_POST[birth_date]', '$_POST[adress]', '$_POST[city]', '$_POST[state]', '$_POST[postal_code]', '$_POST[country]', '$_POST[phone]', '$_POST[email_client]','$_POST[username]', '$_POST[password]','$_POST[Credit_Card]','$_POST[Credit_CardType]');"
    
    
    echo "<br />";
    
    if (!mysql_query($sql,$con))
    { 
    echo "<br />";
    die('Error: ' . mysql_error());
    }
    $sql2="INSERT INTO login(password, username, costumer_costumer_ID) 
    VALUES ('$_POST[username]',  '$_POST[password]', '$_POST[costumer_ID]');";
    if(!mysql_query($sql2,$con)){
    echo "<br />";
    die ("ERROR: ".mysql_error());
    
    }
    
    
    if (isset($_REQUEST['email_client'])){
    
    $email = $_REQUEST['email_client'] ;
    $subject = 'Email Confirmation testing';
    $message = 'Greetings'." ". $_REQUEST['first_name'].","."\n" 
    ."We have received your request."."\n". "Please check if the fields are filled correctly."."\n\n"
    ."Desired Username: ".$_REQUEST['username']."\n" 
    ."Desired password is: ".$_REQUEST['password']."\n"
    ."I.D. number: ".$_REQUEST['costumer_ID']."\n"
    ."First name: ".$_REQUEST['first_name']."\n"
    ."Last name: ".$_REQUEST['last_name']."\n"
    ."Birth date: ".$_REQUEST['birth_date']."\n"
    ."Adress: ".$_REQUEST['adress']."\n"
    ."City: ".$_REQUEST['city']."\n"
    ."Country: ".$_REQUEST['country']."\n"
    ."Phone: ".$_REQUEST['phone']."\n"
    ."Email Adress: ".$_REQUEST['email_client']."\n"
    ."Card Number: ".$_REQUEST['Credit_Card']."\n"
    ."Card Type:".$_REQUEST['Credit_CardType']."\n"
    ."\n\n Your account was succesfully created";
    
    ;
    
    $_sender='www.postmasterSPapiesOnlineShopping.com';
    mail($email, $subject,
    $message, "From:" . $_sender );
    
    
    }
    
    
    
     echo"<br />";
     echo " Congratulations, your account was succesfully created.";
    
    mysql_close($con);
    
    
    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
    ?>
    
    </header>
    </html>
    
    $stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                             VALUES 
                             (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');
    
    $stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
    $stmt->execute();
    
    // use native prepared statements if supported
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
    $stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                           VALUES 
                           (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');
    
    $stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
    ...
    $stmt->bindParam(15, $_POST['Credit_CardType']);
    
    $stmt->execute();