Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony. - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony. (/thread-dodawanie-recordow-do-mysql-z-zabezpieczenie-przy-odswiezaniu-strony)



Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony. - toma5z - 02-03-2011

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 ?


RE: Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony. - R_Rafalsky - 03-03-2011

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?


RE: Dodawanie recordów do MySQL z zabezpieczenie przy odswiezaniu strony. - toma5z - 03-03-2011

(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 +