2014-09-22 23 views
0

所以我想知道這個操作是否可以在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)) ; 
    } 

>

我的注射工作正常,但我必須做一些非常新的事情:表Debutsoin的兩個最後屬性,Finsoin確實在我的表單中只指向一個選擇的值:

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

所以當客戶選擇第一個選項值「德18:00à24h00」爲例,該唯一的價值已經得到了分成兩個表的屬性:「18:00」到Debutsoin和「24h00」到Finsoin

我真的沒有那麼舒服使用

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

但是,如果你有一個解決方案,甚至與IF是所有就聽:) 謝謝您的關心。

+0

你的if條件不正確'$ _POST ['PlageHoraire']'會給你V1或V2的值。所以你的情況每次都會失敗。 – 2014-09-22 08:32:31

+0

SQL注入我來了! (這不是一件好事) – 2014-09-22 08:33:16

回答

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)) ; 
} 
+0

感謝您的答案,它聽起來真的很好 所以一定要不要愚蠢的編碼錯誤(我是新的發展) 我讓我的變量數組 但爲了給真正的價值到每個陣列我必須從頭創建它們?如: $ arPlageHoraire = explode(「」,$ _ POST ['PlageHoraire']); 如果(isset($ _ POST [ 'PlageHoraire'] == 「V1」) { $ arPlageHoraire [1] = 「18:00」; $ arPlageHoraire [2] = 「24h00」; } 還是我失去點? – Carnangel 2014-09-22 08:36:33

+0

作出我的建議工作,你必須把你的文字「de 18h00à24h00」作爲選項的值。順便說一句...看看其他答案 – niyou 2014-09-22 08:52:33

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以使您的代碼更安全。

+0

哈哈哈我的確切解決方案是隻是寫作!該死的是我的手指放在星期一的早晨... – Flygenring 2014-09-22 08:32:58

+0

真的很棒! 而你告訴我,我會盡量讓它更安全 謝謝你們所有的幫忙:) – Carnangel 2014-09-22 09:12:23