Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony.
#1
Witajcie,

mam pewne pytanko, ćwiczę sobie PHP i natknąłem sie na taki dylemat:

Mamy formularz, w którym dodajemy recordy do baz danych:
clasa/metoda:
Kod PHP:
function adduser($login$rank)
    {
        require_once 
'../class/connect.php';
        
$select "insert into users (login, pass, rank) values('$login','$login','$rank')";
    } 

index.php:
Kod PHP:
require_once '../class/class.Company.php';

$company = new Company();

$login $_GET['login'];
$rank $_GET['rank'];

if(isset(
$login)and isset($rank))
{
    if (
$login == null || $rank == null)
    {
        echo 
'prosze wypelnic pola';
    }
    else 
    {
        
$company->adduser($login$rank);
    }
}

<
form action="../public/index.php" method="get">
login:<input type="text" name="login"/><br>
ranga:<input type="text" name="rank" /><br>
<
input type="submit" value="dodaj"/><br>
</
form


Jest to bardzo prosty algorytm na dodawanie kolejnych pól do bazy danych. Z tym ze mam problem, gdy odświeżę stronę (F5) dodawane są takie same dane do bazy jak zostały dodane ostatnio. Dopisywany jest kolejny record ten z "pamięci". W jaki sposób to zabezpieczyć ? Aby nie można było poprzez odświeżenie strony dodawac pól do mysql ?
Odpowiedz
#2
Musisz zapamiętać w sesji, że już zostało pole dodane. Tutaj masz problem taki, że dodając jedno pole masz możliwość dodania pola kolejnego. Jest to błąd! Lepiej jakbyś podzielił to na dwie podstrony:
1. Formularz dodawania pola.
2. Potwierdzenie dodania pola lub informacja o błędzie.


W 1:
- $_SESSION[dodano']=0;
- wyświetlasz formularz dodawania z akcją na 2
W 2:
Sprawdzasz if($_SESSION['dodano']) jeśli nie to:
- dodajesz do bazy danych i jak wszystko jest cacy to wyświetlasz potwierdzenie i $_SESSION['dodano']=1;
- jeśli coś źle to wyświetlasz komunikat (gość może odświeżyć i spróbować ponownie - tylko jak coś poszło nie tak)
jeśli tak to:
- wyświetlasz komunikat, że dane już dodano
W 2. mamy powrót do 1 np. "Dodaj kolejne pole".

Jasne?
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz
#3
(03-03-2011, 07:05)R_Rafalsky napisał(a): Musisz zapamiętać w sesji, że już zostało pole dodane. Tutaj masz problem taki, że dodając jedno pole masz możliwość dodania pola kolejnego. Jest to błąd! Lepiej jakbyś podzielił to na dwie podstrony:
1. Formularz dodawania pola.
2. Potwierdzenie dodania pola lub informacja o błędzie.


W 1:
- $_SESSION[dodano']=0;
- wyświetlasz formularz dodawania z akcją na 2
W 2:
Sprawdzasz if($_SESSION['dodano']) jeśli nie to:
- dodajesz do bazy danych i jak wszystko jest cacy to wyświetlasz potwierdzenie i $_SESSION['dodano']=1;
- jeśli coś źle to wyświetlasz komunikat (gość może odświeżyć i spróbować ponownie - tylko jak coś poszło nie tak)
jeśli tak to:
- wyświetlasz komunikat, że dane już dodano
W 2. mamy powrót do 1 np. "Dodaj kolejne pole".

Jasne?

Wszystko jak najbardziej jasne !
Tak też kombinowałem z sesją, sądziłem ze jeszcze jest jakaś inna alternatywa. Dzięki ! Masz +
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak sprawdzić czy adres www znajduje sie w bazie mysql? jarekcda 8 9,034 13-05-2017, 01:02
Ostatni post: miketodson255
  Optymalizacja MySQL-a tomek_00 1 3,928 01-09-2013, 13:31
Ostatni post: hieroshima
  [MySQL] Struktura bazy dla słownika msx83 2 3,926 24-08-2013, 16:26
Ostatni post: msx83
  Komunikacja PHP z MySQL na serwerze pawstrze 5 6,453 16-07-2013, 15:58
Ostatni post: Engine
  [MySQL] wyszukiwarka problem darlowiak 3 3,560 13-06-2013, 12:58
Ostatni post: darlowiak

Skocz do:


Użytkownicy przeglądający ten wątek: 3 gości
Sponsorzy i przyjaciele
SeoHost.pl