Wackamole Skrevet 14. september 2007 Del Skrevet 14. september 2007 (endret) Hei, jeg har noen problemer med en if settning, og legger inn koden her etter en time med prøving! Klikk for å se/fjerne innholdet nedenfor PHP <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $db = mysql_connect("localhost","user","pass"); mysql_select_db("rank",$db) or die(mysql_error()); $sql = "select * from user WHERE userID ='".$_GET["id"]."'"; $result = mysql_query($sql,$db) or die(mysql_error()); while($row = mysql_fetch_array($result)){ } ?> <?php echo $rank_level = $row["rank_level"]; echo $rank = $row["rank"]; if ($rank_level == $rank) echo "du har fucka opp heile driten!"; else echo "Din ip er ikke autorisert til admin systemet."; ?> </body> </html> Den skriver ut "Du har fucka opp heile driten!" uansett om rank_level og rank ikke er like... Håper dere kan hjelpe meg... Fredrik- Endret 14. september 2007 av Microsoftbruker Lenke til kommentar
d0ppler Skrevet 14. september 2007 Del Skrevet 14. september 2007 (endret) endre while($row = mysql_fetch_array($result)){ } til $row = mysql_fetch_array($result); er ikke siker på om det løser det, men er ihvertfall mere logisk Endret 14. september 2007 av dga01 Lenke til kommentar
Wackamole Skrevet 14. september 2007 Forfatter Del Skrevet 14. september 2007 Nei det funket ikke... nå aner jeg virkelig ikke hva jeg skal gjøre.. Lenke til kommentar
d0ppler Skrevet 14. september 2007 Del Skrevet 14. september 2007 Når du kjører denne SQL'en direkte mot databasen, får du noen returrader da? Jeg mistenker at mysql_fetch_array returnerer 0 rader Lenke til kommentar
Wackamole Skrevet 14. september 2007 Forfatter Del Skrevet 14. september 2007 det er rart, men du har helt rett, har prøvd med echo $row["rank"] og jeg fikk ingen rader tilbake, men jeg vet at jeg har lagt dette inn i databasen... Lenke til kommentar
d0ppler Skrevet 14. september 2007 Del Skrevet 14. september 2007 hvis du forteller meg nøyaktig hva databasen din heter, hva feltene heter, så skal jeg gi deg riktig SQL i det minste.. Hvordan er du sikker på at du har data i databasen? Bruker du myPHPAdmin, eller har du kun kjørt en INSERT fra et PHP-script, og satsa på at den funka? Lenke til kommentar
d0ppler Skrevet 14. september 2007 Del Skrevet 14. september 2007 drit i det, fant feilen.. $_GET[id] IKKE $_GET["id"] Lenke til kommentar
Wackamole Skrevet 14. september 2007 Forfatter Del Skrevet 14. september 2007 (endret) phpmyadmin Databasen: rank Raden: user Feltene: userID rank rank_level EDIT: Nei, skriver fremdeles ut det samme EDIT2: fikk det til!.. tusen takk for hjelpen! Endret 14. september 2007 av Microsoftbruker Lenke til kommentar
Martin A. Skrevet 15. september 2007 Del Skrevet 15. september 2007 Hei, jeg har noen problemer med en if settning, og legger inn koden her etter en time med prøving! Klikk for å se/fjerne innholdet nedenfor PHP <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $db = mysql_connect("localhost","user","pass"); mysql_select_db("rank",$db) or die(mysql_error()); $sql = "select * from user WHERE userID ='".$_GET["id"]."'"; $result = mysql_query($sql,$db) or die(mysql_error()); while($row = mysql_fetch_array($result)){ } ?> <?php echo $rank_level = $row["rank_level"]; echo $rank = $row["rank"]; if ($rank_level == $rank) echo "du har fucka opp heile driten!"; else echo "Din ip er ikke autorisert til admin systemet."; ?> </body> </html> Den skriver ut "Du har fucka opp heile driten!" uansett om rank_level og rank ikke er like... Håper dere kan hjelpe meg... Fredrik- 9497453[/snapback] Her var det mye rart. SELECT * FROM .... bør ikke brukes med mindre du trenger ABSOLUTT alle radene. Bruker du * må SQL kjøre en egen spørring for å finne ut hvilke felter du har i tabellen din. Skal du bruke metriser(array) i en streng, putt klammer ({..}) rundt det. $sql = "select en, to, tre from user WHERE userID ='{$_GET['id']}'"; Hva ønsker du å oppnå med en tom while-løkke? Ingenting skjer om du ikke utfører kode inni while(). Iom at du bare skal ha en rad, hiv på "LIMIT 1" på slutten av spørringen, og bruk "$row = mysql_fetch_assoc( $result );". Du kan ikke tilegne verdier i en echo. echo $foo = $bar; //fungerer meget dårlig Nøkklene til et array skal ha enkelfnutter rundt, ikke dobbel. $_GET['id'] // Riktig $_GET["id"] // Galt $_GET[id] // Galt Og hvorfor sammeligne to verdier fra brukerens rad? Sett en fast verdi på "adminrank", og sammenlign denne med ranken/gruppen til brukeren. Lenke til kommentar
Wackamole Skrevet 15. september 2007 Forfatter Del Skrevet 15. september 2007 jeg har en to rader på databasen "rank_site" og "rank_level" Disse radene skjekkes opp mot "rank" på bruker tabellen Hvis "rank_level" er det samme som "rank" så viser den "rank_site" som er tilordnet den ranken. Men jeg får det ikke helt til å funke, det funker bare med en side altså hvis bruker "1" har rank 15 så vises den siden som rank 15 skal vise... Men bruker "2" har rank 12 men da skriver den ut "Du har ikke tilgang til siden" jeg selvsagt laget en annen side som skal fungere på rank "12"... sitter på jobb PC-en, så jeg får ikke publisert den koden jeg har nå.. Skal ordne det litt senere idag.. Lenke til kommentar
Stian Jacobsen Skrevet 15. september 2007 Del Skrevet 15. september 2007 For det første, en liten grunnregel, ikke post hele dokumentet, kun koden som er relevant. 1. Når du bruker echo $variable = $annen_variabel blir det bare tøv 2. Hvorfor kjører du en while løkke uten å gjøre noe? 3. Dropp while løkken, bruk heller list() (Definerer variabler av en array) og mysql_fetch_row() (Henter ut en array med innholdet av raden) list($rank_level, $rank) = mysql_fetch_row($result); Du må også endre queryet ditt.. $sql = "SELECT rank_level, rank FROM users WHERE userID ='$sikker_id'"; Når dette er gjort er det bare å kjøre løkken if($rank_level === $rank) { echo "På nesse spiser vi rå sau.. føkked up! :)"; } else { echo "Du har ikke lov til å vise deg på Nesse med denne ip'en"; } Slik blir hele scriptet: <?php mysql_connect("localhost","user","pass"); mysql_select_db("rank"); //Ikke vis feilmeldiger til brukere av siden $sikker_id = addslashes($_GET['id']); // SE: http://phpsec.org/projects/guide/ $sql = "SELECT rank_level, rank FROM users WHERE userID ='$sikker_id'"; $result = mysql_query($sql,$db) or die(mysql_error()); list($rank_level, $rank) = mysql_fetch_row($result); if($rank_level === $rank) { echo "På nesse spiser vi rå sau.. føkked up! :)"; } else { echo "Du har ikke lov til å vise deg på Nesse med denne ip'en"; } ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå