Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dlaczego wykonuje się instrukcja if, lecz nie do końca?
arlid
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 16.06.2007

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


Hej,

mam taki skrypt. Obsługuje formularz aktywacji konta gdzie użytkownik podaje następujące dane: adres mailowy, hasło, kod zabezpieczający z maila. I teraz tak. po aktywacji ma się wykonać ten fragment kodu i pokazać stosowna informacja.

  1. $_SESSION['success'] = '<span style="color:green">Twoje konto zostało aktywowane poprawnie. Potwierdzenie otrzymasz także na swój adres mailowy:'.$email.'</span>';
  2. header('Location: mn-site/aktywacja_konta.php');
  3. include('../mailing/mailing-aktywowanie-konta.php');


Aktywacja jedynie wtedy kiedy wszystkie podane dane się zgadzają. W przeciwnym razie:
  1. $_SESSION['blad'] = '<span style="color:red">podałeś błędne dane</span>';
  2. header('Location: /mn-site/aktywacja_konta.php');
  3. unset($_SESSION['success']);


Niestety nie dział to do końca. Sprawdzałem trzy warianty:
1. Zły mail, reszta ok
2. Złe hasło, reszta ok
3. Zły kod, reszta ok

O ile w pierwszych dwóch przypadkach jest dobrze - podaje błąd i nie ma aktywacji (kolumna kod nie zmienia się na "1" w bazie) o tyle w przypadku 3 dostaję komunikat, że weryfikacja się udała, a konto zostało aktywowane. Mail dochodzi, jednak w bazie nic się nie zmienia konto nadal jest nieaktywne. Jeżeli wprowadzę wszystkie dane poprawnie otrzymuję o co chcę, stosowny komunikat i zmianę "flagi" na 1.

Gdzie tkwi problem, ze kod wykonuje się jakby "częściowo"? Podejrzewam, ze chodzi o coś z tym:
  1. $zapytanie_aktywuj_konto = "UPDATE klient set aktywny = 1 where (email='$email' AND haslo = '$haslo' AND kod='$kod_zabezpieczajacy')";

Jakby nie wykonywało wszystkich ANDów. Poniżej pełny kod tego pliku - może ktoś wyłapie błąd.

  1. <?php
  2.  
  3.  
  4. if ((!isset($_POST['email'])) || (!isset($_POST['haslo'])) || (!isset($_POST['kod'])))
  5. {
  6. header('Location: /mn-site/aktywacja_konta.php');
  7. exit();
  8. }
  9.  
  10. require_once 'connect.php';
  11.  
  12. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  13.  
  14. if ($polaczenie->connect_errno!=0)
  15. {
  16. echo "Error: ".$polaczenie->connect_errno;
  17. }
  18. else
  19. {
  20. $email = $_POST['email'];
  21. $haslo = md5($_POST['haslo']);
  22. $kod_zabezpieczajacy = $_POST['kod'];
  23.  
  24. $email = htmlentities($email, ENT_QUOTES, "UTF-8");
  25. $haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
  26.  
  27. $zapytanie_sprawdzenie_danych = "SELECT email,haslo from klient where email='$email' AND haslo='$haslo'";
  28.  
  29.  
  30. if ($rezultat = @$polaczenie->query($zapytanie_sprawdzenie_danych))
  31. {
  32. if (($rezultat->num_rows)>0) {
  33.  
  34. $zapytanie_aktywuj_konto = "UPDATE klient set aktywny = 1 where (email='$email' AND haslo = '$haslo' AND kod='$kod_zabezpieczajacy')";
  35. if ($rezultat = @$polaczenie->query($zapytanie_aktywuj_konto)){
  36.  
  37. $_SESSION['success'] = '<span style="color:green">Twoje konto zostało aktywowane poprawnie. Potwierdzenie otrzymas ztakże na swój adres mailowy:'.$email.'</span>';
  38. header('Location: mn-site/aktywacja_konta.php');
  39. include('../mailing/mailing-aktywowanie-konta.php');
  40.  
  41.  
  42. unset($_SESSION['blad']);
  43.  
  44.  
  45. }
  46.  
  47. }else{
  48.  
  49.  
  50. $_SESSION['blad'] = '<span style="color:red">podałes błędne dane</span>';
  51. header('Location: mn-site/aktywacja_konta.php');
  52.  
  53. unset($_SESSION['success']);
  54.  
  55. }
  56. }
  57. else {
  58. echo "zapytanie się NIE wykonało";
  59.  
  60. }
  61.  
  62. }
  63.  
  64. $polaczenie->close();
  65.  
  66.  
  67. ?>



Wybaczcie jakoś samego kodu itd, nie jestem w tym aż tak biegły a samouczenie jest chyba najlepsza metodą . Mam nadzieję, że coś da się z tym zrobić smile.gif Pozdrawiam.

Ten post edytował arlid 30.07.2015, 18:27:37
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.08.2025 - 05:46