我的代码PHP / mysql有什么问题

时间:2014-03-29 15:44:21

标签: php html mysql

我刚刚完成了使用php制作html表单的任务,该表单将信息存储在mysql数据库中。它不是制作表格,我无法弄清楚原因。这是html代码(顺便说一下我不关心sql注入因为这只是为了学校)

<?php


@$ime = $_POST['ime'];
@$prezime = $_POST['prezime'];
@$email = $_POST['email'];
@$adresa = $_POST['adresa'];
@$misljenje = $_POST['misljenje'];


$conn = mysqli_connect("localhost","root","");
mysqli_query($conn,"create database baza_podataka");
mysqli_select_db($conn,"baza_podataka");
mysqli_query($conn,"create table 'podatci' (id int primary key auto_increment, ime varchar(10), prezime varchar(10), email varchar(20), adresa varchar(20), misljenje varchar(100))");
mysqli_query($conn,"INSTERT INTO `podatci` VALUES ('$ime','$prezime','$email','$adresa','$misljenje')");

&GT;

和html

<form name="forma" action="obrada.php" method="post">
            <label>Ime :</label>
                    <input type="text" id="ime" size="20"/><br><br>

            <label>Prezime :</label>
                    <input type="text" id="prezime" size="20"/><br><br>

            <label>E-mail :</label>
                    <input type="text" id="email" size="20"/><br><br>

            <label>Adresa :</label>
                    <input type="text" id="adresa" size="40"/><br><br>

            <label>Vase misljenje :</label><br><br>
                    <textarea name="misljenje" id="misljenje"></textarea>

            </label><input type="submit" id="submit" name="submit"/>

3 个答案:

答案 0 :(得分:0)

你有很多问题..

  • 删除错误抑制运算符。 @$ime = $_POST['ime'];从所有变量中删除@
  • 每次调用此脚本时,您都会创建数据库。 [完全错误]
  • 您的查询是INSERT而不是INSTERT
  • 您正在将$_POST参数直接传递给您的查询,这使您100%容易受到SQL注入攻击。切换到准备好的陈述以克服这一点。

答案 1 :(得分:0)

首先,我没有在您的HTML代码上看到</form>

尝试使用$_REQUEST['htmlvariablename'];

ime = $_REQUEST['ime'];
$prezime = $_REQUEST['prezime'];
$email = $_REQUEST['email'];
$adresa = $_REQUEST['adresa'];
$misljenje = $_REQUEST['misljenje'];

...如前所述,您很容易受到SQL注入攻击。

答案 2 :(得分:-1)

1)使用INSERT代替INSTERT

mysqli_query($conn,"INSERT INTO `podatci` VALUES ('$ime','$prezime','$email','$adresa','$misljenje')");

2)使用mysqli_real_escape_string

逃离所有数据

3)永远不要在代码@上使用错误抑制器,而是使用isset()来检查它是否已设置。

$conn = mysqli_connect("localhost","root","");
$ime = isset($_POST['ime']) : mysqli_real_escape_string($conn, $_POST['ime']) ? '';
$prezime = isset($_POST['prezime']) : mysqli_real_escape_string($conn, $_POST['prezime']) ? '';
$email = isset($_POST['email']) : mysqli_real_escape_string($conn, $_POST['email']) ? '';
$adresa = isset($_POST['adresa']) : mysqli_real_escape_string($conn, $_POST['adresa']) ? '';
$misljenje = isset($_POST['misljenje']) : mysqli_real_escape_string($conn, $_POST['misljenje']) ? '';

4)最后,没有必要在每次加载时创建数据库和/或表,你应该只做一次。