WebHU - Programozási kérdések és válaszok

refresh = elküldéskor php-ben, hogyan lehet javítani?

Létrehozok egy beszúrási folyamatot a php-ben, de probléma van a kódommal. amikor refresh az oldalam, akkor submit és insert az adatokat is.

itt a kódom:

<form action="/drupal/node/1" method="post">
Name: <input type="text" name="name" />
Price: <input type="text" name="price" />
Minutes: <input type="text" name="minutes" />
<input type="submit" />
</form>
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// some code
mysql_select_db("zain", $con);
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['minutes']))
{
 $val_name = $_POST['name'];
 $val_price = $_POST['price'];
 $val_min = $_POST['minutes'];
 $max_id_sql = mysql_query("SELECT MAX(id) FROM card_category");
 $data = mysql_fetch_array($max_id_sql);
 if ($data[0]==0)
 {
    $val_id = 1;
 }
 else
 {
    $val_id = $data[0] + 1;
 }

 mysql_query("INSERT INTO card_category (id, name, price, minutes) VALUES ($val_id,'$val_name',$val_price,$val_min )");
 $_POST['name'] == NULL;
 $_POST['price'] == NULL;
 $_POST['minutes'] == NULL;
}
$result = mysql_query("SELECT * FROM card_category");

echo "<table border='1'>
<tr>
<th>id</th>
<th>name</th>
<th>price</th>
<th>mins</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['id'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['price'] . "</td>";
  echo "<td>" . $row['minutes'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
if (isset($_POST['lastname']))
{
print $_POST['lastname'];
}
mysql_close($con);
?>

a kérdésem az lenne, hogy hogyan tudom kezelni, amikor refresh az oldalt és nem submit az adatokat?

előre is köszönöm

21.06.2012


Válaszok:


1

Amikor megkapja a POST-beküldést:

  1. Az adatok feldolgozása
  2. Átirányítási válasz visszaküldése
  3. Kérjen GET kérést a böngészőtől arra az URL-re, amelyre átirányít
  4. Válaszolj erre a HTML-el

Ha a böngésző frissül, akkor újra elküldi a GET kérést, amelyet a PHP nem használ az adatbázis módosítására.

Ez a POST-REDIRECT-GET minta. További részletek ebben a blogbejegyzésben (amely szintén példa PHP kódot tartalmaz a megjegyzésekben).

21.06.2012
  • gyakorlatilag Quentin a header('Hely: url') használatát jelenti; Olvassa el a linkjét, ez egy olyan fogalom, amellyel tisztában kell lennie. 21.06.2012

  • 2

    Az oldal frissítésének javítása ne tegye közzé az értéket php használatával:

    if ($_SERVER['HTTP_CACHE_CONTROL']=="")
    {
    // process the data
    }
    
    12.09.2012
  • Tudnál néhány megjegyzést írni a kódodhoz? Miért gondolja, hogy ez a megoldás, fejtse ki egy kicsit bővebben. 03.10.2012

  • 3

    Ha megnézi a $_SERVER['REQUEST_METHOD'] változót, akkor azt fogja mondani, hogy 'POST', amikor a felhasználó elküldte az adatokat, és 'GET', amikor ő nem tette. Így:

    if($_SERVER['REQUEST_METHOD']=='POST')
    {
       // process the data
    }
    

    Mellesleg, a kódod rendkívül sebezhető az SQLI támadásokkal szemben...

    21.06.2012
  • Amikor a böngésző frissül, ugyanazt a kérést fogja végrehajtani, mint az oldal első megszerzésére… ami egy bejegyzési kérés, így ez nem fog működni. 21.06.2012
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..