Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowaniem
Forum PHP.pl > Forum > PHP
Majcok12
Mam problem z logowaniem, juz kiedys mialem taki problem i odpowiedz dostalem na tym forum (http://forum.php.pl/index.php?showtopic=21974&hl= / wersja skryptu ponizej to wersja, ktora dziala przed uzyciem cookie [aby po zalogowaniu sie nie trzeba bylo sie ponownie logowac gdziekolwiek na stronie przez 24h). Jednak gdy juz wpisze dane i wysle formularz, pojawia sie komunikat o blednym loginie i hasle (mimo ze podaje poprawne dane, ktora sa w bazie.

ponizej zawartosc register.php:
  1. <?
  2. include(&#092;"common.php\");
  3. global $id_polaczenia;
  4. $id_polaczenia = db_connect();
  5.  
  6. if(!isset($_POST[&#092;"user_nick\"]) && !isset($_POST[\"user_password\"]) && !$_SESSION[\"usernick\"] && !$_SESSION[\"userpassword\"]){
  7.         html_header();
  8.         ?>
  9. </TR>
  10. <TR>
  11.   <TD WIDTH=\"100%\" HEIGHT=\"16\" background=\"layout/belka2.gif\" style=\"border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black;\"><center><font style=\"font-family: Times New Roman; font-size: 8pt;\"><b>Logowanie</b></center></TD>
  12.  
  13. </TR>
  14. </table>
  15. <TABLE cellpadding=\"1\" cellspacing=\"0\" WIDTH=\"100%\" HEIGHT=\"1000\" BGCOLOR=\"#000000\" style=\"border-left: solid; border-left-width: 1px; border-left-color: black; border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black; border-right: solid; border-right-width: 1px; border-right-color: black;\">
  16. <TR>
  17.   <TD valign=\"top\" align=\"center\" bgcolor=\"#414141\" colspan=\"3\">
  18. <br>
  19. <form method=\"post\" action=\"<?php echo $PHP_SELF ?>\">
  20.   <table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"95%\" height=\"10%\" align=\"center\" valign=\"top\">
  21.    <tr>
  22.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Nick:</th>
  23.     <td width=\"70%\"><input type=\"text\" name=\"user_nick\" size=\"20\" maxlength=\"20\" class=\"pollItem\"></td>
  24.    </tr> 
  25.    <tr>
  26.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Hasło:</th>
  27.     <td width=\"70%\"><input type=\"text\" name=\"user_password\" size=\"20\" maxlength=\"20\" class=\"pollItem\"></td>
  28.    </tr> 
  29.    <tr>
  30.     <th width=\"30%\" colspan=\"2\" NOWRAP>
  31.     <input type=\"submit\" class=\"pollButton\" value=\"Zaloguj\" onmouseover=\"this.className='pollButton-over'\" onmouseout=\"this.className='pollButton'\">
  32.     </tr>
  33.    </table>
  34.   </table>
  35.    </form>
  36.    <?php
  37.         html_footer();
  38.  
  39.  
  40. }
  41. else 
  42.         setcookie (&#092;"user_id\", \"$_POST[user_nick]\", time()+86400);
  43.         setcookie (&#092;"user_pass\", \"$_POST[user_password]\", time()+86400);
  44.         $_SESSION[&#092;"usernick\"] = strtolower(trim($_COOKIE['user_id']));
  45.         $_SESSION[&#092;"userpassword\"] = trim($_COOKIE['user_pass']);
  46.     $zapytanie = mysql_query(&#092;"SELECT user_nick, user_pass, admin FROM users WHERE user_nick ='$_SESSION[usernick]'\");
  47.     $user = mysql_fetch_array($zapytanie);
  48.     if($_SESSION[&#092;"usernick\"] == strtolower($user[\"user_nick\"]) && $_SESSION[\"userpassword\"] == $user[\"user_pass\"] && $user[\"admin\"] == \"TAK\"){
  49.         global $id_polaczenia;
  50.         $id_polaczenia = db_connect();
  51.         function in_use($user_nick) {
  52.             global $user_tablename;
  53.  
  54.             $query = &#092;"SELECT user_nick FROM $user_tablename WHERE user_nick = '$user_nick'\";
  55.             $wynik = mysql_query($query);
  56.             if(!mysql_num_rows($wynik)) return 0;
  57.             else return 1;
  58.         }
  59.         
  60.         function reg_form() {
  61.             html_header();
  62.             ?>
  63. </TR>
  64. <TR>
  65.   <TD WIDTH=\"100%\" HEIGHT=\"16\" background=\"layout/belka2.gif\" style=\"border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black;\"><center><font style=\"font-family: Times New Roman; font-size: 8pt;\"><b>Dodaj nowego użytkownika</b></center></TD>
  66.  
  67. </TR>
  68. </table>
  69. <TABLE cellpadding=\"1\" cellspacing=\"0\" WIDTH=\"100%\" HEIGHT=\"1000\" BGCOLOR=\"#000000\" style=\"border-left: solid; border-left-width: 1px; border-left-color: black; border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black; border-right: solid; border-right-width: 1px; border-right-color: black;\">
  70. <TR>
  71.   <TD valign=\"top\" align=\"center\" bgcolor=\"#414141\" colspan=\"3\">
  72. <br>
  73. <form method=\"post\" enctype=\"multipart/form-data\" action=\"<?php echo $PHP_SELF ?>\">
  74. <input type=\"hidden\" name=\"action\" value=\"register_user\">
  75.  
  76.   <table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"95%\" height=\"70%\" align=\"center\" valign=\"top\">
  77.    <tr>
  78.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Nick:</th>
  79.     <td width=\"70%\">&nbsp; <input type=\"text\" size=\"20\" maxlength=\"20\" name=\"nick\" class=\"pollItem\"></td>
  80.    </tr> 
  81.    <tr>
  82.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Wybrane hasło:</th>
  83.     <td width=\"70%\">&nbsp; <input type=\"password\" size=\"20\" maxlength=\"20\"  name=\"userpassword\" class=\"pollItem\"></td>
  84.    </tr>
  85.    <tr>
  86.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Powtórz hasło:</th>
  87.     <td width=\"70%\">&nbsp; <input type=\"password\" name=\"userpassword2\" size=\"20\" maxlength=\"20\" class=\"pollItem\"></td>
  88.    </tr>
  89.    <tr>
  90.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Email:</th>
  91.     <td width=\"70%\">&nbsp; <input type=\"text\" name=\"usermail\" size=\"20\" maxlength=\"20\" class=\"pollItem\"></td>
  92.    </tr>
  93.    <tr>
  94.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">O sobie:</th>
  95.     <td width=\"70%\">&nbsp;<textarea rows=\"5\" cols=\"40\" name=\"userprofile\" class=\"pollItem\"></textarea></td>
  96.    </tr>
  97.    <tr>
  98.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Sprzęt:</th>
  99.     <td width=\"70%\">&nbsp; <input type=\"text\" name=\"userhardware\" size=\"20\" maxlength=\"20\" class=\"pollItem\"></td>
  100.    </tr>
  101.    <tr>
  102.     <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Admin:</th>
  103.     <td width=\"70%\">&nbsp; <select name=\"admin\" size=1 class=\"pollItem\">
  104.     <option selected value=\"NIE\">NIE</option>
  105.     <option value=\"TAK\">TAK</option>
  106.     </select>
  107.     </td>
  108.    </tr>
  109.    <tr>
  110.     <th width=\"30%\" colspan=\"2\" NOWRAP>
  111.     <input type=\"submit\" class=\"pollButton\" value=\"Rejestruj\" onmouseover=\"this.className='pollButton-over'\" onmouseout=\"this.className='pollButton'\">
  112.     <input type=\"reset\" class=\"pollButton\" value=\"Wyczysc\" onmouseover=\"this.className='pollButton-over'\" onmouseout=\"this.className='pollButton'\"></th>
  113.    </tr>
  114.   </table>
  115. </table>
  116. </form>
  117.          <?php
  118.          echo &#092;" &nbsp;<a href=\"$PHP_SELF?action=logout\"><font style=\"font-family: Verdana; font-size: 9px;\"><b>Wyloguj</b></a><br>n\"; 
  119.          html_footer();
  120.         }
  121.  
  122.         function register_user() {
  123.             global $id_polaczenia;
  124.             global $nick, $userpassword, $userpassword2, $usermail, $userprofile, $userhardware, $admin;
  125.             global $default_db, $user_tablename;
  126.             $awatar = &#092;"obrazki/users/none.jpg\";
  127.  
  128.             mailcheck($usermail);
  129.             if(empty($userprofile)) error_message(&#092;"Brak komentarza!\");
  130.             if(empty($usermail)) error_message(&#092;"Brak adresu email!\");
  131.             if(empty($nick)) error_message(&#092;"Brak nicku!\");
  132.             if(empty($userpassword)) error_message(&#092;"Brak hasla!\");
  133.             if(empty($userpassword2)) error_message(&#092;"Musisz powtórzyć hasło!\");
  134.             if($userpassword!=$userpassword2)
  135.                 error_message(&#092;"Podane hasła nie są identyczne\");
  136.             if(in_use($nick)) 
  137.                 error_message(&#092;"Wybrany nick jest już zajęty, proszę wybrać inny\");
  138.             
  139.             $query = &#092;"INSERT INTO users VALUES(NULL, '$nick', '$userpassword', '$usermail', '$userprofile', curdate(), NULL, '$userhardware', '$awatar', '$admin')\";
  140.             $wynik = mysql_query($query);
  141.             if(!$wynik) error_message(sql_error());
  142.             html_header();
  143. ?>
  144. <TR>
  145.   <TD WIDTH=\"100%\" HEIGHT=\"16\" background=\"layout/belka2.gif\" style=\"border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black;\"><center><font style=\"font-family: Times New Roman; font-size: 8pt;\"><b>Dodaj nowego użytkownika</b></center></TD>
  146.  
  147. </TR>
  148. </table>
  149. <TABLE cellpadding=\"1\" cellspacing=\"0\" WIDTH=\"100%\" HEIGHT=\"1000\" BGCOLOR=\"#000000\" style=\"border-left: solid; border-left-width: 1px; border-left-color: black; border-bottom: solid; border-bottom-width: 1px; border-bottom-color: black; border-right: solid; border-right-width: 1px; border-right-color: black;\">
  150. <TR>
  151.   <TD valign=\"top\" align=\"center\" bgcolor=\"#414141\" colspan=\"3\">
  152. <br>
  153. <font style=\"font-family: Verdana; font-size: 9pt; color: gray;\"><b>Użytkownik <?php echo $nick ?> został zarejestrowany</b><br>
  154.  
  155. </tr>
  156. </table>
  157.             <?php 
  158.             html_footer();
  159.         }
  160.             switch($action) {
  161.             case &#092;"register_user\":
  162.                 register_user();
  163.             break;
  164.             case &#092;"logout\":
  165.                 logout();
  166.             break;
  167.             default:
  168.                 reg_form();
  169.             break;
  170.         }
  171.  
  172.             
  173. }
  174.  
  175.  
  176.  
  177.     else {
  178.         session_unregister(&#092;"usernick\");
  179.         session_unregister(&#092;"userpassword\");
  180.         setcookie (&#092;"user_id\");
  181.         setcookie (&#092;"user_pass\");
  182.         echo &#092;"zly login lub haslo\";
  183.         echo &#092;"<a href=\"$PHP_SELF\">Logowanie</a><br>\";
  184.     }
  185.     
  186. ?>


funcja logout(), znajdujaca sie pliku common.php:
  1. <?
  2. function logout() {
  3.     if($_COOKIE['user_id'] && $_COOKIE['user_pass']) { 
  4.         setcookie (&#092;"user_id\");
  5.         setcookie (&#092;"user_pass\");
  6.         error_message(&#092;"Zostałeś wylogowany\");
  7.         header (&#092;"Location: index.php\");    
  8.     } 
  9. }
  10. ?>


PS. http://forum.php.pl/index.php?showtopic=22285

pzdr
Ive
jak używasz zmiennych globalnych w nawiasach kwadratowych nazwy pól umieszczaj w ' i ' lub " i ",
to powinno pomoc bo widzialem ze w zapytaniu do bazy nie stosujesz tych cuzysłowiów.
Pozdro, Ive
Majcok12
probalem tak juz:
  1. <?php
  2.  
  3. setcookie (&#092;"user_id\", $_POST[\"user_nick\"], time()+86400);
  4.  
  5. ?>

i to samo. A w tym zapytaniu jak dodan w nawiase klamoworym '' lub "" to generuje mi jakis blad (juz nie pamietam jaki), te zapytanie dziala, tylko cos jest nie tak z cookie.

Pzdr
Ive
heh...
no to w zapytaniach musisz je wyłączać kropkami:
  1. <?
  2. $q = mysql_query(&#092;"SELECT * FROM tabela WHERE x='\".$_POST['x'].\"' AND y='\".$_SESSION['y'].\"' ORDER BY x\") or die(mysql_error());
  3. ?>


ew. sprobuj na poczatku strony dodac ob_start(); i na koncu ob_end_flush();
Majcok12
No coz, bledu juz o zlej skladni nie pokazuje, ale nadal to samo (nie loguje mnie)

A co do ob_start itd. to od poczatku mam to na poczatku i koncu strony, ale wycialem to z kodu w temacie jak go zakladalem.

Pzdr
FiDO
Przenosze: Skrypty php -> php
komar07
  1. <?php
  2. $_SESSION[&#092;"usernick\"] = strtolower(trim($_COOKIE['user_id']));
  3. $_SESSION[&#092;"userpassword\"] = trim($_COOKIE['user_pass']);
  4.  
  5. ?>

tu masz blad

Skrypt nie zobaczy ci wartosci
  1. <?php
  2. $_COOKIE
  3. ?>
poniewaz dane do cookie zostaly zapisane na tyej samej stronie z ktorej chcesz je wywolywac musi nastapic przekierowanie i dopiero na nastepnej stronie mozesz odczytac dane z cookie.
Majcok12
Dobra zmieniłem tylko ze niby wszystko dziala, tylko ze w funkcjach wyswietlajacych szablon strony mam taki warunek:

  1. <?php
  2.  
  3. if($_SESSION[&#092;"usernick\"] && $_SESSION[\"userpassword\"] && $_COOKIE[\"user_id\"] && $_COOKIE[\"user_pass\"]){
  4.  
  5. ?>


I jezeli jest spelniony pojawiaja sie opcje dodaj newsa, wyloguj itd.
Tylko ze to sie pojawia tylko zaraz po zalogowaniu i gdy sie juz zaloguje i np. wejde na strone glowna czy inna nie ma juz tych opcji (i w jak w tym momencie klikne na logowanie, wyskakuje mi blad ze bledny login lub haslo) Nie wiem czemu.


Pzdr
ARJ
tak właściwie to:
Cytat
setcookie() określa ciasteczko (ang. cookie) do wysłania z nagłówkami HTTP. Ciasteczko musi być wysłane zanim jakiekolwiek inne nagłówki zostaną wysłane (to jest ograniczenie ciasteczek, nie php). To wymaga od ciebie umieszczenia wywołań tej funkcji przed znacznikami <html> czy <head>.

czyli przydało by się aby logowanie było na samym początku strony!
Ive
a masz na kazdej wywoływanej stronie dodane session_start() ? bo ci moze sesja sie 'gubi' tongue.gif
Majcok12
Cytat(Ive @ 2004-11-15 22:18:50)
a masz na kazdej wywoływanej stronie dodane session_start() ? bo ci moze sesja sie 'gubi' tongue.gif

Ok dzieki, dziala i utrzymuje mnie na stronie jako zalogowany. Tylko ze teraz mnie nie chce wylogowac

  1. <?php
  2.  
  3. function logout() {
  4. if($_COOKIE['user_id'] && $_COOKIE['user_pass']) { 
  5. setcookie (&#092;"user_id\");
  6. setcookie (&#092;"user_pass\");
  7. error_message(&#092;"Zostałeś wylogowany\");
  8. header (&#092;"Location: index.php\");
  9. } 
  10. }
  11. ?>


Pzdr
Ive
w setcookie dodaj parametr time()+-1 czy jakos tak to sie robilo zeby usunac to cookie [poszukaj na forum]
i session_destroy();
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.