Jump to content
php.lv forumi

Nemaku uzrakstīt kveriju


iall

Recommended Posts

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

×
×
  • Create New...