所以我想知道在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都听到了:) 谢谢你的关注。
答案 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)) ;
}