Jump to content
php.lv forumi

Recommended Posts

Posted

Labdien ,

tātad ,lūk skripts - http://paste.php.lv/7086 ! Nespēju saķinķerēt to skriptu tā ,lai viņš pārbaudītu pēc lietotāja pakāpes. Datubāzē ir lauks - user_level enum("1","2","3") (vai varēja arī kā savādāk glabāt?).

 

Kad ielogojos vienalga ar kādu lietotāju ,tad viņš izvada visas pakāpes kas ir lietotājiem ,piem. - ir divi lietotaji ar - moderators statusu ,divi ar administratora u.t.t.

 

Lūk ,bilde:

 

12yq3.png

 

P.S. - Lietotājam test ir pakāpe 2 - moderators! Pārējās rindiņas vajadzētu aizvākt.

 

Par koda līkumu lūdzu nerunājat. Paldies!

Posted (edited)

Kāpēc Tu atlasi visus lietotājus? Atlasi tikai to vienu rindiņu, kura attiecas uz konkrēto lietotāju!

Šobrīd skripts iziet cauri visiem lietotājiem.

Edited by Aleksejs
Posted

Kā es varētu atlasīt to vienu rindiņu?

SELECT * FROM users WHERE login='test' AND user_level='2'

?

 

Varbūt var kā savādāk?

Posted

Nu padomā loģiski:

Tu gribi nolasīt no tabulas visu par konkrēto lietotāju test. Zinot lietotāja vārdu, var viennozīmīgi atrast lietotāju. Lietotāja tiesību līmenis ir viens no nezināmajiem lielumiem, kuru tad arī gribam noskaidrot.

Tātad vaicājums ir:

SELECT user_level FROM users WHERE login='test';

 

Ja vien lietotājs var būt vienlaicīgi administrators, bet nebūt lietotājs, citādi es neizmantotu enum, bet gan vienkāršu cipara lauku.

Posted (edited)

Lielum ,lielum lielais paldies ,viss sanāca! :)

 

Uzrakstīju šādi

 

SELECT user_level FROM users WHERE login='$_POST[login]'

 

,bet kad nospiežu logout ,tad nerādās vairs login forma! Velns parāvis ,aiz vienas problēmas seko otra!

 

Šis kods man stāv iekš radit.php ,bet formas apstrāde notiek iekš login.php ,tapēc droši ,ka $POST['login'] nu nekādīgi nevarētu sanākt! Varbūt tikai $SESSION['login'] ? Kādi ieteikumi?

Edited by iall
Posted (edited)

Nezinu gan ko tev dara logout.php, bet ja tu pēc tam atkal nonāc uz postēto kodu, tad vai pirms tam sessijas mainīgais $_SESSION['login'] tiek nomests nost?

 

Respektīvi logout.php kaut kur ir unset($_SESSION['login'] );?

Edited by kasisppr
Posted (edited)

logout man ir šāds - http://paste.php.lv/7087 :/

 

Vaina tomēr laikam ir kverijā ,jo ja es atstāju SELECT user_level FROM users - tad viss pamatīgi gļuko ,bet rādas! Nestrādā kverijā ,ne $_POST['login'] ne $_SESSION['login']! Labi ,gan izfunktierēšu. Paldies par palīdzību. :)

Edited by iall
Posted (edited)

Pag, nu ja tu esi nomainījis kveriju uz

SELECT user_level FROM users WHERE login='$_POST['login']'

,

 

tad spiežot uz to tavu linku, kas aizved uz logout.php, aplikācija atgriežas index.php ar tukšu $_POST['login'] vērtību. un ja vien tev datubāzē nav kāds lietotājs ar login lauka vērtību '' (tukšums) , SQL kverijs tev atgriezis 0 rindas un nekas no tava while(){} ciklā esošā koda neizpildīsies. Drīzāk raksti kaut ko līdzīgu

 

$user_login = !empty($_POST['login']) ? $_POST['login'] : $_SESSION['login'];

$result = mysql_query("SELECT * FROM users WHERE login='$user_login'");
$row = mysql_fetch_array($result)
if($row)
{
 while($row)
 {
	 if($row['user_level'] == 2) { // ja pakaape2 - tad ir moderators}
	 else if($row['user_level'] == 3) { // ja pakaape 3 - tad ir administrators}
	 else { // ja pakaape 1 - tad ir lietotaajs} //kaut kadu pakapi varbut tomer vajag iedot by default
  }
}
else
{
// te nak tava login forma
}

 

P.S. tu $_POST['login'] rakstīji "login" pēdiņās??? Jo parādītajā SQL kverija piemērā tādu nav.

 

P.S.S. par koda sintaksi neesmu drošs, jo esu pieradis izmantot ADODB SQL pieprasijumiem.

Edited by kasisppr
Posted (edited)

Paldies , tūliņ paskatīšos.

 

Nerakstīju es login pēdiņās.

 

Damn ,forma parādās ,bet nevar ielogoties! Kļūda iespējams pavisam vienkārša ,bet prasa smadzenes! :)

Edited by iall
Posted (edited)

Ideju sapratu ,liels paldies Tev!

 

Nevaru to velnu dabūt pie dzīvības ne par ko! :@

 

EDIT: Viss smuki un solīdi! Liels paldies visiem. :) Works like a charm.

Edited by iall
×
×
  • Create New...