Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - Problem z get.
Forum PHP.pl > Forum > Przedszkole
RaitoPL
Witam. Mam problem z GET w aktywacji konta. Używam sobie fajnego "systemu", który wyświetla mi podstrony w następujący sposób:
  1. <?php $sites = array ("news" => "inc/news.php", "register" => "inc/rejestracja.php", "logowanie" => "inc/logowanie.php", "aktywacja" => "inc/aktywacja.php", "kontakt" => "inc/kontakt.php", "uzytkownik" => "inc/zmiana-danych.php");
  2. if ($_GET["str"]!="")
  3. {
  4. if ($sites[$_GET["str"]]) { include($sites[$_GET["str"]]); }
  5. else { include("inc/error.php"); }
  6. }
  7. else { include("inc/news.php"); }
  8. ?>

I teraz tak.. Znajomy (Uhutaf z Wojborku) pisał mi kiedyś, że w adresie, przy GET, nie może być pod rząd dwa razy znaku "=". Weryfikacja wygląda tak:


  1. <?php
  2.  
  3. if ($_GET['weryfikacja'] == 'potwierdz') {
  4.  
  5. include 'db.php'; // połączenie się z bazą danych
  6. $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  7.  
  8. $kod = htmlspecialchars(stripslashes(strip_tags(trim($_GET['kod']))), ENT_QUOTES); // filtrowanie $_GET['kod']
  9.  
  10. // jeżeli kod znajduje się URL, skrypt najpierw patrzy czy użytkownik ma aktywne konto
  11. // jeżeli nie ma, wtedy zmienia się jego status, jeżeli nie upłynęło 48 godzin od rejestracji
  12. $wynik = mysql_query("SELECT * FROM $tabela
  13.  
  14. WHERE kod='$kod' and status=1");
  15. if (mysql_num_rows($wynik) == 1) {
  16. echo '<p>Aktywowałeś już swoje konto.</p';
  17. } else {
  18. $wynik = mysql_query("DELETE FROM $tabela
  19. WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=0");
  20. $wynik = mysql_query("UPDATE $tabela
  21. SET status='1', data=NOW() WHERE kod='$kod' and status=0");
  22. $wynik = mysql_query("SELECT * FROM $tabela
  23. WHERE kod='$kod' and status=1");
  24. if (mysql_num_rows($wynik) == 1) {
  25. echo '<p>Dziękujemy. Rejestracja została zakończona poprawnie. Możesz się teraz zalogować.</p>';
  26. }
  27. }
  28.  
  29. // jeżeli został wprowadzony zły link, wyświetla się błąd
  30. if (!$kod or mysql_num_rows($wynik)<>1) {
  31. echo '<p>Aktywowanie konta nie powiodło się.</p>';
  32. }
  33. mysql_close($polaczenie);
  34.  
  35. }
  36.  
  37. ?>

Przykładowy email weryfikacyjny wygląda następująco:
moja-strona.pl/index.php?str=weryfikacja=weryfikacja&kod=KOD
Proszę o szybką pomoc. Tak, jak wczoraj - każdy post otrzyma "pomógł".
Pozdrawiam!
piotrex41
Masz tu warunek:
  1. if ($_GET['weryfikacja'] == 'potwierdz') {

Więc żeby link odniósł się do tego kodu, to musisz najpierw w linku dać tą zmienną. Przykładowy link:
Kod
http://moja-strona.pl/index.php?weryfikacja=potwierdz&kod=TWÓJ_KOD

Bo teraz Twój link jest w ogóle nie poprawny, nie możesz dawać cos=xcD=cokolwiek... Link musi wyglądać mniej więcej tak:
podstrona.php?zmienna_get=wartość&kolejna_zmienna=kolejna_wartosc
Powinno zadziałać.
strife
No ale w czym jest problem? Nie możesz tego linku weryfikacyjnego po prostu zmienić na poprawny? W sensie klucz1=wartosc1&klucz2=wartosc2 etc. ?

Nie bardzo widzę fragment kodu, który odpowiada za generowanie linku weryfikacyjnego : >
RaitoPL
Ale ja mam tak, że strony wyglądają w ten sposób:
moja-strona.pl/index.php?str=weryfikacja
moja-strona.pl/index.php?str=rejestracja
I tak to m.w wygląda, więc nie mogę zrobić tak:
http://moja-strona.pl/index.php?weryfikacj...mp;kod=TWÓJ_KOD
strife
Jak to nie?

Kod
http://moja-strona.pl/index.php?str=weryfikacja&weryfikacja=potwierdz&kod=TWOJ_KOD


Podstawy przekazywania zmiennych. Odsyłam do manuala.
piotrex41
To musisz dodać kolejny klucz i do niego leci kolejna wartość:
Kod
http://moja-strona.pl/index.php?str=weryfikacja&weryfikacja=potwierdz&kod=KOD


Bo jak już pisałem nie możesz mieć cos=xcd=cokolwiek, dlatego w linku musi być kolejny klucz i kolejna wartość, która spełni warunek.
RaitoPL
Jesteś moim mistrzem.. Okazało się, że dzięki Tobie wypatrzyłem błąd. W kaskadzie (chyba tak to się nazywa) dałem "inc/aktywacja.php", a powinno być "inc/weryfikacja.php". Dzięki wielkie!
Żeby nie otwierać nowego tematu, mam problem z rejestracją. Zrobiona jest tak samo, tyle, że nie wyświetla komunikatów, etc. Spróbuję sobie z tym poradzić, ale jak nie dam rady, to napiszę tutaj

Okey, problem występuje. Po wysłaniu formularza w rejestracji, przenosi na stronę główną i nic się nie dzieje. Nie wyświetla żadnego komunikatu o nieudanej lub udanej rejestracji. Kompletnie nic. Jak to naprawić?
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.