Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gdzie ERROR ? :>
Forum PHP.pl > Forum > Przedszkole
Balas
Robie skrypt ktory otwiera sesje jezeli sa odpowiednie dane w cookies. Mam taki kod:

index.php:
  1. <? 
  2. include "function.php";
  3.  
  4. if (isset($_SESSION["login"]))
  5. {
  6. echo('jestes zalogowany');
  7. echo('<a href="wyloguj.php?wyloguj=1">WYLOGUJ</a>');
  8. }
  9. if (isset($_SESSION["admin"]))
  10. {
  11. echo('jestes zalogowany jako admin');
  12. echo('<a href="wyloguj.php?wyloguj=2">WYLOGUJ</a>');
  13. }
  14.  
  15.  
  16. ?>


Function.php
  1. <?
  2. $luser = $_COOKIE["user"]; 
  3. $pass = $_COOKIE["pass"]; 
  4. $id = $_COOKIE["id"]; 
  5.  
  6. $strVarHost = 'localhost';
  7. $strVarUser = 'root';
  8. $strVarPasswd = 'Hammett';
  9. $strVarBaza = 'IPB';
  10.  
  11. mysql_connect ("localhost", "root", "Hammett"); // Łączenie się z bazą.
  12. $sqlSelect = mysql_select_db("IPB");
  13.  
  14. $sqlQuery = mysql_query("SELECT * FROM ipb_members WHERE id = '$id' ");
  15. $sqlArray = mysql_fetch_array($sqlQuery);
  16.  
  17. if ($sqlArray == TRUE)
  18. {
  19. $sqlPass = $sqlArray['legacy_password'];
  20. $sqlId = $sqlArray['id'];
  21.  
  22. if ($luser == 1 && $id == $sqlId && $pass == $sqlPass)
  23. {
  24. }
  25. if ($luser == 2 && $id == $sqlId && $pass == $sqlPass)
  26. {
  27. }
  28.  
  29. }
  30.  
  31. ?>


Dane w cookies sa bo sprawadzalem przez echo ($luser); itd.

Gdzie robie błąd questionmark.gif
mike
Poczytaj o priorytetach operatorów a potem użyj nawiasów w warunkach logicznych w if'ach.


A na przyszłość pisząc że masz błąd, że coś nie działa, e.t.c. pisz jakie komunikaty pokazuje php, jakie są konsekwencje błądu. Napisanie że php nic nie wyświetla tez jest wskazówką dla odpowiadających. Jak chcesz dostać odpowiedź, włóż trochę pracy w pytanie.
Balas
powiem tak tongue.gif wyswietla zawsze to samo (znaczy jestes zalogowany :] )... nie wazne czy admin czy uzytkwnik (zanim przeszedlem na sesje i tylko na cookies bylo OK)

I nie wiem nadal w czym problem.... jak powinno byc questionmark.gif I po co nawiasy w IFach questionmark.gif

EDIT: Mam takie pytanie: czy moze lepiej zostac przy ciasteczkach questionmark.gif czy lepiej przejsc na sesje questionmark.gif Ktos doradzi questionmark.gif snitch.gif
Alchemy_A.R.T.
ja stosuje ciacha - nazwa 'sesja' zle mi sie kojarzy tongue.gif do tej pory walcze hehe
Balas
zostalem przy cisateczkach tongue.gif i sie nimi bawie... :]
mike
Mam wrażenie że nawet nie zajrzałeś do linka który Ci dałem, a jak zajrzałeś to przeleciałeś wzrokiem żeby wrócić to, nie mieć sobie nic do zarzucenia i dostać gotowca, co :?:

A Tam jest odpowiedź.

Warunki logiczne w if'ach są źle skonstruowane. Żeby były poprawnie musisz zmienić priorytet operatorów logicznych, a to z kolei osiągnisz stosując nawiasy.

Przecież wiadomo że && jest silniejsze od == dlaego Ci źle działa.
Balas
to jak powinno byc questionmark.gif

  1. <?
  2. if (($luser == 2) && ($id == $sqlId) && ($pass == $sqlPass))
  3. ?>


Czy ocb questionmark.gif A tamto przeczytalem 2 razy i nadal nie wiem ocb tongue.gif
qbuz
Cytat(mike_mech)
Przecież wiadomo że && jest silniejsze od == dlaego Ci źle działa.

"Raczej" na odwrot.

Cytat(php Manual)
Poniższa tabela zawiera priorytet operatorów, od najniższego priorytetu na górze.

Powiązanie || Operator
lewe || ,
lewe || or
lewe || xor
lewe || and
prawe || print
lewe || = += -= *= /= .= %= &= |= ^= ~= <<= >>=
lewe || ? :
lewe || ||
lewe || &&
lewe || |
lewe || ^
lewe || &
bez powiązania || == != === !==
bez powiązania || < <= > >=



Cytat(OnE.Killer)
to jak powinno byc questionmark.gif

Dobrze miales


@OnE.Killer: Czy na pewno tamte wszystkie IFy w function.php zwracaja ci TRUE?

Sprawdz to np. w taki sposob:

  1. <?php
  2.  
  3. if ($sqlArray == TRUE)
  4. {
  5. print 'dziala 1<br />';
  6. }
  7.  
  8. if ($luser == 1 && $id == $sqlId && $pass == $sqlPass)
  9. {
  10. print '2 tez dziala<br />';
  11. }
  12.  
  13. // i tak dalej...
  14.  
  15.  
  16. ?>


Gdy bedziesz tak sprawdzal, to wykomentuj najlepiej session_start(); itd., zeby nie wywalalo bledow (nie mozna wyslac header'ow).
Co to sa w ogole te ob_start(); tam?
ob_start(); daj na sam poczatek calego kodu, a na sam koniec ob_end_flush;


PS: Coz to?? ;]
  1. <?php
  2.  
  3. $strVarHost = 'localhost';
  4. $strVarUser = 'root';
  5. $strVarPasswd = 'Hammett';
  6. $strVarBaza = 'IPB';
  7.  
  8. mysql_connect ("localhost", "root", "Hammett"); // Łączenie się z bazą.
  9. $sqlSelect = mysql_select_db("IPB");
  10.  
  11. ?>
mike
Oj, gafa z mojej strony. Przepraszam ślicznie. <zawstydzony>
Balas
qrde... gafe zrobilem tongue.gif sprawdzalem w innym miejscu wartosci z cookies (w function.php i tam wyswietlalo) :] teraz poprawilem i działa (dodalem sprawdzanie cookies tuz przed :])

sry za kłopot tongue.gif
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.