Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]if i else
Forum PHP.pl > Forum > Przedszkole
Kamil J.
  1. <?php
  2. if($num>0){
  3. echo"<div class='error'>Taka nazwa użytkownika już istnieje!</div>";
  4. register();
  5.  
  6. }
  7. else {// Wszytko ok
  8.  
  9. $numer = rand(1, 1000000)
  10.  
  11. $sql="INSERT INTO cms_users (`username`, `pass`, `email`, `gg`, `clan`, `color`, `level`, `active`, `cod
    e`, `date`) VALUES ('$username', PASSWORD('$pass'), '$email', '$gg', '$clan', 'black', '0', '0', '$numer', NOW())"
    ;
  12. $wykonaj=@mysql_query($sql) or die(mysql_error());
  13.  
  14. $query="SELECT uid FROM cms_users ORDER BY date DESC limit 0,1";
  15. $wykonaj=@mysql_query($query) or die(mysql_error());
  16. $wynik=@mysql_fetch_row($wykonaj) or die(mysql_error());
  17. $uid=$wynik['0'];
  18.  
  19. $tresc="Zostałeś zarejestrowany poprawnie, aby korzystać z konta kliknij w poniższy
     link:
  20. http://" . $host . $drzewo . "?id=" . $uid . "&code=" . $numer;
  21.  
  22. if(mail($email, "Rejestracja przeprowadzona poprawnie", $tresc, "From: kamillukas1@interia.pl")){
  23. echo "Rejestracja przebiegła poprawnie, aby korzystać z konta, należy odebrać ema
    il'a wysłanego na adres podany podczas rejestracji i kliknąć w podany tam link.<br><br> <a href='index.php'>Strona Główna</a>"
    ;
  24. }
  25.  
  26.  
  27. } // wszystko ok
  28. ?>



Jeśli Num jest większe od zera, czyli w moim przypadku taki user juz istnieje , wyświetla się poprawie komunika błędu i formularz. Lecz jak jest 0 - czyli ok , to nic się nie dzieje. Otwiera się pusta strona, która na pustke w źródle. Jaki mam błąd?
kszychu
Może z jakiegoś powodu mail() zwraca false?
SongoQ
Sprawdz register();
Kamil J.
na pewno nie zwraca. mail() była i działa, a dopiero potem wsadziłem ją w te warunki sprawdzające nick usera.

EDIT

Ale register(); działa, jeśli num>0 to wyświetla komunikat, oraz funkcja register wyświetla sie poprawnie, dopiero szwankuje jak num<1. Czyli jak zaczyna dzialać ta rubryka :

  1. <?php
  2. else {// Wszytko ok
  3.  
  4. $numer = rand(1, 1000000)
  5.  
  6. $sql="INSERT INTO cms_users (`username`, `pass`, `email`, `gg`, `clan`, `color`, `level`, `active`, `cod
    e`, `date`) VALUES ('$username', PASSWORD('$pass'), '$email', '$gg', '$clan', 'black', '0', '0', '$numer', NOW())"
    ;
  7. $wykonaj=@mysql_query($sql) or die(mysql_error());
  8.  
  9. $query="SELECT uid FROM cms_users ORDER BY date DESC limit 0,1";
  10. $wykonaj=@mysql_query($query) or die(mysql_error());
  11. $wynik=@mysql_fetch_row($wykonaj) or die(mysql_error());
  12. $uid=$wynik['0'];
  13.  
  14. $tresc="Zostałeś zarejestrowany poprawnie, aby korzystać z konta kliknij w poniższy
     link:
  15. http://" . $host . $drzewo . "?id=" . $uid . "&code=" . $numer;
  16.  
  17. if(mail($email, "Rejestracja przeprowadzona poprawnie", $tresc, "From: kamillukas1@interia.pl")){
  18. echo "Rejestracja przebiegła poprawnie, aby korzystać z konta, należy odebrać ema
    il'a wysłanego na adres podany podczas rejestracji i kliknąć w podany tam link.<br><br> <a href='index.php'>Strona Główna</a>"
    ;
  19. }
  20.  
  21.  
  22. } // wszystko ok
  23. ?>
kszychu
A jak masz ustawione komunikowanie błędów? Jeżeli ich nie wyświetlasz, to sprawdź w logach, może tam coś jest?
I pousuwaj @, niech funkcje zwracają błędy od razu.
Kamil J.
  1. <?php
  2. $numer = rand(1, 1000000);
  3.  
  4. $sql="INSERT INTO cms_users (`username`, `pass`, `email`, `gg`, `clan`, `color`, `level`, `active`, `cod
    e`, `date`) VALUES ('$username', PASSWORD('$pass'), '$email', '$gg', '$clan', 'black', '0', '0', '$numer', NOW())"
    ;
  5. $wykonaj2=mysql_query($sql) or die(mysql_error());
  6.  
  7. $query="SELECT uid FROM cms_users ORDER BY date DESC limit 0,1";
  8. $wykonaj=mysql_query($query) or die(mysql_error());
  9. $wynik=mysql_fetch_row($wykonaj) or die(mysql_error());
  10. $uid=$wynik['0'];
  11.  
  12. $tresc="Zostałeś zarejestrowany poprawnie, aby korzystać z konta kliknij w poniższy
     link:
  13. http://" . $host . $drzewo . "?id=" . $uid . "&code=" . $numer;
  14.  
  15. if(mail($email, "Rejestracja przeprowadzona poprawnie", $tresc, "From: kamillukas1@interia.pl")){
  16. echo "Rejestracja przebiegła poprawnie, aby korzystać z konta, należy odebrać ema
    il'a wysłanego na adres podany podczas rejestracji i kliknąć w podany tam link.<br><br> <a href='index.php'>Strona Główna</a>"
    ;
  17. }
  18. ?>


Dobra usunąłem i poprawiłem jeden błąd brak średnika po $numer=rand.....

Lecz nadal to samo. Biała strona.
kszychu
W logi zajrzyj.
Kamil J.
Jak?
kszychu
Ja nie wiem, gdzie Twój serwer www zostawia logi. Mój apache na slacku loguje do /var/log/apache i tam są pliki access_log i error_log. Interesujący w tym przypadku jest error_log. To plik tekstowy, więc chyba nie muszę Ci tłumaczyć jak obejrzeć zawartość pliku tekstowego.
Kamil J.
Tyle że ja testuje skrypty na serwie internetowym.
UDAT
Cytat(Kamil J. @ 2005-12-29 14:14:24)
  1. <?php
  2. $query="SELECT uid FROM cms_users ORDER BY date DESC limit 0,1";
  3. $wykonaj=mysql_query($query) or die(mysql_error());
  4. $wynik=mysql_fetch_row($wykonaj) or die(mysql_error());
  5. $uid=$wynik['0'];
  6. ?>

Zamiast tego fragmentu użyj
  1. <?php
  2.  
  3.  
  4. ?>

gdyż jeśli zarejestruje się dwóch userów naraz, to jeden z nich nie aktywuje konta tongue.gif

Co do funkcji mail: napewno mail istnieje questionmark.gif
Kamil J.
No wiem, tyle że mysql_insert_id, chyba też bierze wartość ostatniego ID , czyli to samo. Mylę się ?
UDAT
Mi się wydawało że zwraca last_id ostatniego zapytania wysłanego w obecnej instancji skryptu, ale może się mylę

W ostateczności można
  1. SELECT uid
  2. FROM user_cms WHERE username=$username
Kamil J.
Oo dziękuje wolę to rozwiązanie.
Instaluje u siebie serwer, żeby sprawdzić te logi.



Zainstalowałem krasnala wrzuciłem tam ten skrypt i otworzyłem logi. Niestety nic mi to nie mówi. Może Wam.
Kod
[Thu Dec 29 16:29:31 2005] [error] [client 127.0.0.1] File does not exist: c:/usr/apache/httpd/html/favicon.ico
[Thu Dec 29 16:29:36 2005] [error] [client 127.0.0.1] File does not exist: c:/usr/apache/httpd/html/favicon.ico
[Thu Dec 29 16:31:12 2005] [error] [client 127.0.0.1] File does not exist: c:/usr/apache/httpd/html/favicon.ico
ToPeR
Przeglądarki domyślnie pytają o ikonkę strony za każdym wejściem, wrzuć tam jaką małą favicon.ico i już , albo to olej smile.gif
Kamil J.
No tak, czyli nie ma żadnych error'ów dotyczących skryptu. Czyli dlaczego program nie wykonuje mi tego co mam w else?


Dodano :


Więc według porad z artów na php.pl, po kolei testowałem fragmenty skryptów. Usunąłem całą tę instrukcję warunkową z if($num... i zauważyłem, że ciągle jest to samo. Dopiero poprawnie zaczęło działać, gdy usunąłem fragment odpowiedzialny za przypisanie $num.

  1. <?php
  2. $sql4="SELECT * FROM cms_users WHERE username='$username'";
  3. $wykonaj4=mysql_query($sql4) or die(mysql_error());
  4. $wynik4=mysql_fetch_assoc($wykonaj4) or die(mysql_error());
  5. $num=mysql_num_rows($wykonaj4) or die(mysql_error());
  6.  
  7. ?>


To już wiem, tylko jaki jest tutaj błąd ?
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.