Divne spravanie sa elseif

Programovacie jazyky, rady, poradňa...
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Divne spravanie sa elseif

Príspevok od používateľa TGiJack »

neviete prečo mi elseif hadže opačne podmienký ? či je to normalka?

priklad:

Kód: Vybrať všetko

public function over($pass){ 
    	$query = mysql_fetch_array($this->query ,$this->spojenie); 
    	if (!$query) { 
    		return $this->vysledok = "bla bla"; 
	
		}elseif ($query[heslo] == $pass) {
			return $this->vysledok = "dobre";		
		}else {
			return $this->vysledok = "zle";		
		} 	   	   		   	   	   		   	   	   		   	   	   		   	   	   		   	   	   		  		   	   	   	
    }
elseif ($query[heslo] == $pass) tato podmienka by mala vratit TRUE ak sa zhoduje ale neviem prečo to nefunguje proste ak sa zhoduju vypiše že heslo je zle a ked ho vypisem zle tak je to OK,ale ked napišem elseif ($query[heslo] != $pass) tak je všetko ok ..teraz neviem či to elseif vraca nejaké negacie alebo čo :( ..kde robím chybu :( prosim
ST1GD3R
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 250
Registrovaný: 20 apr 2009, 11:32
Bydlisko: Doma

Príspevok od používateľa ST1GD3R »

Počuj a vyťahuje ti to $query[heslo] dobre,? Skús ho skontrolovať tak že ho vypíšeš najpr len. pretože sa môže stať to napr to query to nevybere správne . A dajme tomu ty čakáš že ti query vratí heslo napr 123456 a ono ti možno vráti " " nič....A preto keď provnávaš if napr to $query[heslo] == $pass tak tto porovnáva ako " " == 123456 čo je vlastne blbosť.

A ak vyberáš z db skús to takto SELECT * FROM heslo WHERE heslo='$pass' ak ti SELECT vráti hodnotu večšiu ako 1 tak je heslo dobré. Ak nie zlé.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

zrejme budeš mať chybu niekde inde, nejak tam nevidím nič zlé, iba ak by si v $this->query nemal správny resource (celé je to dosť divno robené, že over sa spolieha na to, že predtým bol select hesla z db, neviem prečo sa ten select nerobí v tejto funkcii)

//autoeditácia príspevku ( 19 May 2009, 19:20 )
ST1GD3R napísal:...
A ak vyberáš z db skús to takto SELECT * FROM heslo WHERE heslo='$pass' ak ti SELECT vráti hodnotu večšiu ako 1 tak je heslo dobré. Ak nie zlé.
na to by som sa nespoliehal, skôr by som overoval či je mysql_num_rows väčšie ako nula
ST1GD3R
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 250
Registrovaný: 20 apr 2009, 11:32
Bydlisko: Doma

Príspevok od používateľa ST1GD3R »

--> audiotrack: Hentak som to myslel len som sa zle vyjadril.

BTW : Hentak to robím ja s tým že to porovnávam nie len na heslo

$sql ="SELECT * FROM tabulka WHERE meno='$meno' AND heslo='$heslo' ";
$result = mysql_query($sql,$pripojenie);
if (mysql_num_rows($result) > 0)
{
echo "Heslo bolo zadané správne";
}

Pretože keby máš len SELECT * FROM tabulka WHERE heslo='$heslo' by ti to mohlo vytiahnuť všetko z DB kde máš heslo napr 123456 každý riadok.
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

no aj tak som nadtým uvažoval lebo neviem je to riadne divnee :( a neviem čo stým ale idem to hned odskušať
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

Riadok s tabulky si vyberaj podla mne a nie podla hesla ako ti radi ST1GD3R

Kód: Vybrať všetko

$sql ="SELECT * FROM tabulka WHERE meno='$meno' "; 
$result = mysql_query($sql,$pripojenie); 
if (mysql_num_rows($result) > 0) 
{ 
 $result = mysql_fetch_array($result);
 $heslo = $result['heslo'];
} 
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

vdaka za všetky rady už som to spravil nakoniec som mal tam chybu a pri volany z DB query mi vracalo "" alebo uplne kraviny ale už je to OK ..len som musel zmazať parameter $this->spojenie nechapem prečo robil také blbosty ale všade inde funguje len pri tomto logine nie :( ale tak všetko je OK to je hlavne :roll:

ešte jedna otazočka stači ak bude kontrolovat u uživatela či existuje sid ? aby som vedel že je lognutý? alebo to treba ešte nejako zabezpečit?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

sid sa mi vytvorí pri session_start() a tým pádom ho mám aj keď nie som lognutý. Ukladaj si do session nejakú hodnotu (napríklad id aby si vedel kto je lognutý) a kontroluj $_SESSION['id'] nie sid (ak si teda mal na mysli sid prenášané ako get alebo v cookies)
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

audiotrack napísal:sid sa mi vytvorí pri session_start() a tým pádom ho mám aj keď nie som lognutý. Ukladaj si do session nejakú hodnotu (napríklad id aby si vedel kto je lognutý) a kontroluj $_SESSION['id'] nie sid (ak si teda mal na mysli sid prenášané ako get alebo v cookies)
JJ tak fajne len som chcel vedieť či to stači kontrolovat a či sa to da nejako obýst bez väčšých problemov chcem aby to bolo čo najbezpečnejšie
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

to s tou kontrolou ci je niekto online by aj mna zajimalo, ked sa niekto napr neodhlasi iba zavrie stranku ako mam zistit ze je uz na tej stranke nieje??
ST1GD3R
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 250
Registrovaný: 20 apr 2009, 11:32
Bydlisko: Doma

Príspevok od používateľa ST1GD3R »

Napr kontroluj posledný čas. A ak je menší ako 15 min tak daj že je offline. :) A halve proste pri každom klôiknuti na stránku nech sa updatne čas v DB :)
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

ST1GD3R napísal:Napr kontroluj posledný čas. A ak je menší ako 15 min tak daj že je offline. :) A halve proste pri každom klôiknuti na stránku nech sa updatne čas v DB :)
tak som to aj ja rozmýšlal ale nieje to vela kontrol ked to bude kontrolovat ten čas ? lebo tak to musi celučku tabulku prejsť každeho jedneho uživatela
ST1GD3R
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 250
Registrovaný: 20 apr 2009, 11:32
Bydlisko: Doma

Príspevok od používateľa ST1GD3R »

Prečo? Dáš len SELECT nick FROM tabulka where cas je mensi ako 15 min a je to :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

TGiJack napísal:tak som to aj ja rozmýšlal ale nieje to vela kontrol ked to bude kontrolovat ten čas ? lebo tak to musi celučku tabulku prejsť každeho jedneho uživatela
čo ty táraš? Ja som užívateľ s id 123. Pri každom prechode stránky sa pozre do tabulky napríklad logged_users či je čas pri user_id=123 zvýšený o 5 minút menší ako aktuálny čas. Ak nie, updatne čas, ak hej, zmaže "môj" riadok z tejto tabuľky. Pri prihlásení usera sa jeho riadok pridá. Je to práca s jednou tabuľkou, kde bude pár záznamov (iba tí čo sú prihlásení) a bude sa pracovať len s tým podľa id (nie so všetkými). Ostatní useri ma vôbec nezaujímajú

//prípadne tie časy môžeš mať pri užívateľoch ako ďalší atribút
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

jaj jasne audiotrack to ma nenapadlo takto sa nato pozriet :oops: to je potom omnoho menšia tabulka velak vdaka
Napísať odpoveď