PHP $ _POST值拆分为两个属性表

时间:2014-09-22 08:16:46

标签: php mysql

所以我想知道在Php中这个操作是否可行。 我只是使用php语言注入我的数据库。

所以这是形式(非常简单):

<form action="Form2.php" method="post" id="">
<div id="Formulaire1">
<div id="Titre">
  <div class="Id">  Identifiant </div>
  <div class="Ch">  Code Horaire </div>
  <div class="Date">    Date </div>
  <div class="PlH"> Plage Horaire</div>
</div>
<div id="Box">
<input type="text" name="Identifiant"id="Identifiant" ></input>

<select name="CodeHoraire" id='CodeHoraire'>
    <option value="V1">V1</option>
    <option value="V2">V2</option>
    <option value="V3">V3</option>
    <option value="V5">V5</option>
    <option value="V6">V6</option>
    <option value="ST">ST</option>
</select>

<input type="date" max="2020-01-01" min="2010-01-01" name="the_date" id="the_date">
</input>

<select name="PlageHoraire" id="PlageHoraire">
    <option value="V1">De 18h00 à 24h00</option>
    <option value="V2">De 00h00 à 07h00</option>
</select>
(....there are 4 more inputs )
</div>
<input type="submit" id="Submit" value="Envoyer" />
</form>

所以我有一个名为“Formulaire”的表,其中包含10个属性:

IF(isset($_POST['UnitList'])
    AND isset($_POST['Catsoin'])
    AND isset($_POST['Soin'])
    AND isset($_POST['Duree']))
{ 
header('Location: Redirection.php');

    mysqli_query($connexion,"Insert into formulaire
    (
        Form_ID,
        identifiant,
        Ch,
        Date,
        Unite,
        Catsoin,
        Soin,
        Duree,
        Debutsoin,
        Finsoin
    )
    VALUES
    (
        NULL,
         '".$_COOKIE['Identifiant']."',
         '".$_COOKIE['CodeHoraire']."',
         '".$_COOKIE['the_date']."',
         '".$_POST['UnitList']."',
         '".$_POST['Catsoin']."',
         '".$_POST['Soin']."',
         '".$_POST['Duree']."',
         '".$_COOKIE['PlageHoraire']."',
        NULL
    )") or die(mysqli_error($connexion)) ;
    }

&GT;

我的注射效果很好,但是我必须做一些非常新的事情:Debutsoin表的最后两个属性,Finsoin确实在我的表格中指向了一个选择的值:

<select name="PlageHoraire" id="PlageHoraire">
   <option value="V1">De 18h00 à 24h00</option>
   <option value="V2">De 00h00 à 07h00</option>
</select>

因此,当客户选择第一个选项值“De18h00à24h00”时,This Only ONE值必须分为两个表属性:“18h00”进入Debutsoin,“24h00”进入Finsoin

我真的不太习惯使用

  If($_POST['PlageHoraire']=="de 18h00 à 24h00")
  {
       Insert into tableFormulaire...
  }

但是如果你有一个解决方案,即使是IF都听到了:) 谢谢你的关注。

2 个答案:

答案 0 :(得分:3)

由于您正在定义用户可以选择的值,因此最简单的方法是将可用值存储在PHP中。

$plageHoraire = array(
  'v1' => array(
    'from' => '18h00',
    'to' => '24h00'
   ),
  'v2' => array(
    'from' => '00h00',
    'to' => '07h00'
   )
);

现在您可以循环遍历数组并创建选项标记:

<select name="PlageHoraire" id="PlageHoraire">
<?php foreach ($plageHoraire as $id => $times) { ?>
  <option value="<?=$id?>">De <?=$times['from']?> à <?=$times['to']?></option>
<?php } ?>
</select>

这将为您提供所需的HTML输出。现在,提交后您可以使用数组从ID中获取实际值:

$times = $plageHoraire[$_POST['PlageHoraire']];
$from = $times['from'];
$to = $times['to'];

您可以在SQL查询中使用这些值。

附注:您的代码对SQL注入是开放的。您应该查看prepared statements以使您的代码更安全。

答案 1 :(得分:0)

首先将字符串分解为数组

$arPlageHoraire = explode(" ",$_POST['PlageHoraire']);

然后执行插入查询:

mysqli_query($connexion,"Insert into `formulaire`
(
    `Form_ID`,
    `identifiant`,
    `Ch`,
    `Date`,
    `Unite`,
    `Catsoin`,
    `Soin`,
    `Duree`,
    `Debutsoin`,
    `Finsoin`
)
VALUES
(
    NULL,
     '".$_COOKIE['Identifiant']."',
     '".$_COOKIE['CodeHoraire']."',
     '".$_COOKIE['the_date']."',
     '".$_POST['UnitList']."',
     '".$_POST['Catsoin']."',
     '".$_POST['Soin']."',
     '".$_POST['Duree']."',
     '".$arPlageHoraire[1]."',
     '".$arPlageHoraire[3]."'
)") or die(mysqli_error($connexion)) ;
}