Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zabezpieczenie danych przekazywanych w linku
Forum PHP.pl > Forum > Przedszkole
Lethys
Witam,

W moim skrypcie rejestracji przekazuje dane referencyjne. Zebym mogl sobie pozniej zobaczyc z jakiego źródła user się zarejestrował.

Wygląda to tak:

register.php?ref=forumphp

Chciałbym zabezpieczyć aby użytkownicy nie mogli wpisywać byle czego w link.

Próbowałem zrobić to na 2 sposoby ale żaden nie działa:


  1.  
  2. //pierwszy
  3.  
  4. if(!preg_match('/^[a-zA-z0-9]{1,10}$/D',$_GET['ref']) and $_GET['ref'] != NULL){
  5. $problem = TRUE;
  6. echo("<p id='uwaga'><h2>Użyto niedozwolonych znaków w przekierowaniu do rejestracji.<br><br>Wróć do poprzedniej strony i zarejestruj się z właściwego linku.</h2></p>");
  7. }
  8.  
  9. //drugi
  10.  
  11. if(!preg_match('/^[a-zA-z0-9]{1,10}$/D',$ref) and $ref != NULL){
  12. $problem = TRUE;
  13. echo("<p id='uwaga'><h2>Użyto niedozwolonych znaków w przekierowaniu do rejestracji.<br><br>Wróć do poprzedniej strony i zarejestruj się z właściwego linku.</h2></p>");
  14. }


Jak to zrobić?
Pawel_W
napisz najpierw jak chcesz zabezpieczyć smile.gif
Lethys
Tak jak w moich kombinowanych przykładach.

Chcę aby w register.php?ref=tojestmojref

można było wpisaywać tylko litery i cyfry.
zamper
A po co użytkownik ma coś wpisywać w adresie ?
Jeżeli Cię dobrze zrozumiałem to masz kilka formularzy rejestracyjnych i chcesz wiedzieć z którego user się zarejestrował.
Jeżeli tak to:
Form1:
  1. ...<input type="hidden" name="ref" value="zrodlo1" />

Form2:
  1. ...<input type="hidden" name="ref" value="zrodlo2" />

Form3:
  1. ...<input type="hidden" name="ref" value="zrodlo3" />


Później się odwołujesz za pomocą:
$_GET['ref']
$_POST['ref']
$_REQUEST['ref'] <-- Tego nie polecam

Możesz to też zrobić w sesji, ale wg mnie wyżej opisany sposób jest lepszy.
Lethys
Użytkownik nie ma nic wpisywać do adresu. To jest zrobione tylko i wyłącznie do mojego użytku, abym wiedział ile osób zarejestrowało się przykładowo z katalogu stron.

Daje tam link: ....register.php?ref=katalogstron

i w ten sposób każdy kto się zarejestruje z tego adresu będzie miał dodane w bazie ref jako katalogstron a ja będę mógł zliczyć te osoby i ocenić efektywność.


Chcę to zabezpieczyć aby jakiś pro user nie zaczął się bawić tym adresem i nie zrobił mi przez to sql injection.


Tak jak już pisałem, próbowałem na dwa sposoby ale coś nie chcą działać i przepuszczają mi np. register.php?ref=%^$<>":

Moje sposoby:

  1.  
  2. //pierwszy
  3.  
  4. if(!preg_match('/^[a-zA-z0-9]{1,10}$/D',$_GET['ref']) and $_GET['ref'] != NULL){
  5. $problem = TRUE;
  6. echo("<p id='uwaga'><h2>Użyto niedozwolonych znaków w przekierowaniu do rejestracji.<br><br>Wróć do poprzedniej strony i zarejestruj się z właściwego linku.</h2></p>");
  7. }
  8.  
  9. //drugi
  10.  
  11. if(!preg_match('/^[a-zA-z0-9]{1,10}$/D',$ref) and $ref != NULL){
  12. $problem = TRUE;
  13. echo("<p id='uwaga'><h2>Użyto niedozwolonych znaków w przekierowaniu do rejestracji.<br><br>Wróć do poprzedniej strony i zarejestruj się z właściwego linku.</h2></p>");
  14. }



xxdrago
No to:
http://php.net/manual/pl/function.mysql-re...cape-string.php

Jeżeli dobrze zrozumiałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.