2013-05-02 4 views
-1

У меня есть веб-форма, которая принимает информацию о студентах. После того, как я вставил данные, я хочу, чтобы он был доступен, даже если я обновил браузер. Это означало бы, что две строки одинаковы, но я не хочу вставлять одни и те же данные снова. Как это может быть возможным?Вставьте те же данные в базу данных

Мой код здесь:

<form method="post" action="insert.php" > 
    <table> 
     <tr> 
      <td width="22%"> Name</td> 
      <td width="4%"></td> 
      <td width="74%"><input type="text" name="name" > </td> 
     </tr> 
     <tr> 
      <td>Information </td> 
      <td></td> 
      <td><input type="text" name="infomn" ></td> 
     </tr> 
     <tr> 
      <td>Email </td> 
      <td></td> 
      <td><input type="text" name="email" ></td> 
     </tr> 
     <tr> 
      <td>Password </td> 
      <td></td> 
      <td><input type="password" name="password" ></td> 
     </tr> 
     <tr> 
      <td colspan="3"> </td> 
     </tr> 
     <tr> 
      <td></td> 
      <td></td> 
      <td ><input type="submit" name="submit" value="Insert" > 
     </td> 
     </tr> 
    </table> 
</form> 

insert.php:

include("connect.php"); 

if($_POST['submit']){ 

    $name=$_POST[name]; 
    $info=$_POST[infomn]; 
    $emal=$_POST[email]; 
    $password=$_POST[password]; 

    $query = "insert into student(name,designation,email,password) values('$name','$info','$emal','$password')"; 

    mysql_query($query) or die("not successfully insert".mysql_error()); 

?>} 
+1

Во-первых: санировать ввода данных пользователем. Второе: перенаправление после запросов POST. – Lucius

+0

«Пожалуйста, скажите мне, в чем проблема и решение». Нет! Вы говорите, в чем проблема. Также, пожалуйста, сделайте домашнее задание самостоятельно. – likeitlikeit

+1

** ВСЕГДА ** проверяйте ввод пользователя, используемый вами код очень уязвим для инъекций SQL (http://mattbearman.com/2011/03/29/six-ways-to-protect-yourself-from-sql- injection /) –

ответ

0

insert.php:

include("connect.php"); 

if(isset($_POST['submit'])) { // put isset() for checking if it submitted or not 

$name=$_POST['name']; 

$info=$_POST['infomn']; 

$emal=$_POST['email']; 

$password=$_POST['password']; 


$query = "insert into student(name,designation,email,password) 

      values('$name','$info','$emal','$password')"; 

if(mysql_query($query)) { 
header('Location:your_form_page.php'); // redirect to avoid inserting data while refreshing 
}else { 
mysql_error() }; 

} 

рекомендация: Попробуйте использовать PDOHow can I prevent SQL injection in PHP?

+1

. Постараюсь исправить проблемы безопасности с исходным кодом, который вы реплицировали. К массиву '$ _POST' нужно обращаться с помощью строк, иначе будут выданы предупреждения. «Заголовок», который вы поставляете, будет работать, но обычно занимает верхний регистр «L». – halfer

1

Я хотел бы проверить, если ваши ценности были заполнены, прежде чем пытаться вставить данные.

if ($_POST['name']) { 
    //Validate, escape, insert... 
} else { 
    //Display form... 
} 

Пожалуйста, пожалуйста, пожалуйста make sure the data you insert into the database is escaped, особенно если вы работаете со студентами данных.

0

Обновление браузера публикует последнее действие (снова) на сервер.

Используйте Post/Redirect/Get шаблон (http://en.wikipedia.org/wiki/Post/Redirect/Get), то есть перенаправление всегда после успешного действия (в вашей вставке базы данных случай).

1

На данный момент он выглядит следующим образом:

  1. информация размещена на insert.php
  2. Вы расположены в insert.php и переменные, размещенные существуют, а также.
  3. Выполнение базы данных выполняется с использованием существующих данных.
  4. Вы обновляете.
  5. Вы никогда не покидаете страницу, потому что обновление заставляет вас перейти на ту же страницу, поэтому браузер предполагает, что опубликованные данные не должны удаляться, а использоваться снова.

Чтобы избежать этого, необходимо добавить

header("Location: index.php"); 

Или похожий код, чтобы убедиться, что пользователь не будет оставаться на той же странице, после выполнения базы данных выполняется.

Смежные вопросы