Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP] Jak zabezpieczyć wysyłanie formularza?
osa2t
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


Witam,

Mam problem w wysyłaniem formularza, wywołanie samego skryptu poprzez wpisanie go w przeglądarce powoduje wywołanie funkcji INSERT i wstawienie danych do MySQL. Wstawione dane w SQL są oczywiście puste, nie wiem jak uniknąć przypadkowych INSERTów do SQL gdy uruchamiam sam skrypt, odświeżam stronę czy też wybieram przycisk „przejdź do poprzedniej strony” w oknie przeglądarki. Jak można zabezpieczyć wysyłanie skryptu. Kod poniżej



  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2.  
  3. </head>
  4.  
  5.  
  6. <form action="" method="post" name="dodawanie_posta2">
  7.  
  8. Nazwa nowego działu:
  9. <br>
  10. <input type="text" name="nazwa_dzialu" />
  11. <br><br>
  12.  
  13.  
  14. Hasło:
  15. <br>
  16. <input type="password" name="haslo2" />
  17. <br><br>
  18.  
  19.  
  20. <input type="submit" value="Wyslij">
  21. </form>
  22. </body>
  23. </html>

  1. <?
  2. require("login.php");
  3. $nazwa_dzialu=$_POST['nazwa_dzialu'];
  4. mysql_connect('localhost',$username,$password);
  5. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  6. $query = "INSERT INTO dzial VALUES (' ', '$nazwa_dzialu', NOW(), '')";
  7. mysql_query($query);
  8. ?>



Jak widać w kodzie samo wstawianie danych i wysłanie ich do SQL mam w tym samym skrypcie, jeżeli zorbie to w dwóch plikach i zamienie action=" " na <form action="wysyłka.php" method="post" name="dodawanie_posta2"> w bardzo małym stopniu rozwiązuje problem, bo strona z formularzem przy wywołaniu nie wysyła INSERTA do SQL ale po wysłaniu danych inputem WYŚLIJ, chciałbym powrócić automatycznie do strony formularza a nie pozostać na pustej stronie z INSEREM. Bardzo proszę o pomoc w rozwiązaniu problemu.

Pozdrawiam,
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <input type="submit" name='submit' value="Wyslij">

  1. if(isset($_POST['submit'])) {
  2. require("login.php");
  3. $nazwa_dzialu=$_POST['nazwa_dzialu'];
  4. mysql_connect('localhost',$username,$password);
  5. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  6. $query = "INSERT INTO dzial VALUES (' ', '$nazwa_dzialu', NOW(), '')";
  7. mysql_query($query);
  8. }


W tym samym pliku. Możesz dodać na końcu header('location: strona.php'); aby przekierowało cię z powrotem do formularza lub do innej strony.

Ten post edytował potreb 9.10.2009, 17:50:11


--------------------

Go to the top of the page
+Quote Post
osa2t
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


Dzięki za pomoc ale jak rozwiązać problem bez przekierowania? Jak zabezpieczyć formularz?
Go to the top of the page
+Quote Post
potreb
post
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Możesz dać wartość unique dla jakiegoś pola w tabeli wtedy skrypt za cholerę nie doda powtarzającego się rekordu np dla pola nazwa działu.

Wnioskuje że twoje zabezpieczenie polega na tym aby nie dodawało pustego rekordu, dałem ci odpowiedź co do tego względu, że po wysłaniu formularza dodaje rekord a następnie powraca do formularza.

Ten post edytował potreb 9.10.2009, 19:31:24


--------------------

Go to the top of the page
+Quote Post
krzysiekk
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

Ostrzeżenie: (0%)
-----


moze tak
  1. <?
  2. if($_POST['send']==1){
  3. if(empty($_SESSION['uniq'])){
  4. print'INSERT';
  5. $_SESSION['uniq']=$_POST['uniq'];}
  6. else{print'Formularz juz byl wyslany';}
  7.  
  8. }
  9. else{
  10.  
  11. $t = time();
  12. ?>
  13. <form method=post action="" method="post">
  14. <input type="hidden" name="send" value="1">
  15. <input type="hidden" name="uniq" value="<? print $t;?>">
  16. <input type="text" name="imie" value="">Imie
  17. <input type="submit" value="Wyslij">
  18.  
  19. </form>
  20.  
  21. <?
  22. }
  23.  
  24. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:29