Skaptrollet Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 jeg tenkte å lage en ønskeliste i php/sql for å lære litt mer men nå sitter jeg fast. jeg har en side med innlogging og den viderefører til denne siden som krever at du er logget inn med brukernavn som session og det jeg har tenkt til å gjøre er at hvis session == wabbit (altså at jeg har logget inn) så skal den include("admin.php"); og der på admin.php er det mulighet fo rå legge til brukere og ønsker jeg har også sett at det går ann å filtrere etter brukerlevel men fikk ikke dette til så hvis noen snille sjeler der ute ville hjelpe meg og lage en liten linje; <?php if($_SESSION == WaBBiT) { include("admin.php"; } else{ echo ("Du er IKKE admin"); } ?> så hadde det vært veldig fint! det beste hadde vel vært å kunne bruke brukerlevels men det skjønte jeg ikke så mye av. noen som kunne forklare det litt nærmere? f.eks byttet ut session = med at hvis bruker level = blah skjer det og det. må f.eks brukerlevel være tall eller kan jeg ha admin og n00b som 2 forskjellige bruker levels? <?php require_once('Connections/gavetips.php'); ?> <?php session_start(); $MM_authorizedUsers = "admin"; $MM_donotCheckaccess = "true"; // *** Restrict Access To Page: Grant or deny access to this page function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && true) { $isValid = true; } } return $isValid; } $MM_restrictGoTo = "index.php"; if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) { $MM_qsChar = "?"; $MM_referrer = $_SERVER['PHP_SELF']; if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&"; if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) $MM_referrer .= "?" . $QUERY_STRING; $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer); header("Location: ". $MM_restrictGoTo); exit; } ?> <?php function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } $editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO gavetips (prioritet, hva, hvor, pris, kommentar) VALUES (%s, %s, %s, %s, %s)", GetSQLValueString($_POST['prioritet'], "text"), GetSQLValueString($_POST['hva'], "text"), GetSQLValueString($_POST['hvor'], "text"), GetSQLValueString($_POST['pris'], "text"), GetSQLValueString($_POST['kommentar'], "text")); mysql_select_db($database_gavetips, $gavetips); $Result1 = mysql_query($insertSQL, $gavetips) or die(mysql_error()); $insertGoTo = "gavetips.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); } mysql_select_db($database_gavetips, $gavetips); $query_gavetips = "SELECT * FROM gavetips"; $gavetips = mysql_query($query_gavetips, $gavetips) or die(mysql_error()); $row_gavetips = mysql_fetch_assoc($gavetips); $totalRows_gavetips = mysql_num_rows($gavetips); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Eriks ønskeliste!!!!</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- form { color: #FF0000; } --> </style> </head> <body> <p>Dette er Eriks ønskeliste</p> <table width="100%" border="2" bordercolor="#000000"> <tr> <th scope="col">Prioritet</th> <th scope="col">HVA</th> <th scope="col">HVOR</th> <th scope="col">PRIS</th> <th scope="col">Kommentar</th> </tr> <?php do { ?> <tr> <td><?php echo $row_gavetips['prioritet']; ?></td> <td><?php echo $row_gavetips['hva']; ?></td> <td><?php echo $row_gavetips['hvor']; ?></td> <td><?php echo $row_gavetips['pris']; ?></td> <td><?php echo $row_gavetips['kommentar']; ?></td> </tr> <?php } while ($row_gavetips = mysql_fetch_assoc($gavetips)); ?> </table> <p> </p> </body> </html> <?php mysql_free_result($gavetips); ?> takk for alle svar! Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 (endret) neida jeg får ikke til user levels! så de som vil være så snille å hjelpe meg må gi meg en if($_SESSION == WaBBiT) { include(admin.php); } linje som funker Endret 7. desember 2003 av WaBBiT Lenke til kommentar
Edorph Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 if ($_SESSION["sessionnavn"] == "WaBBiT") { include(admin.php); } .. vil jeg tro skulle gjøre susen. Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 Fatal error: Cannot redeclare isauthorized() (previously declared in /usr/home/html/html/www/gavetips/gavetips.php:30) in /usr/home/html/html/www/gavetips/admincp.php on line 7 dette får jeg hvis jeg legger til den lille kode snutten din!? virker som selve koden er rett men det er noe galt med dreamweaver koden :O Lenke til kommentar
Edorph Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 Hmm. Ut ifra den feilmeldinga ser det jo ut som du har deklarerer en funksjon to ganger, og det er kanskje ikke lov? Se i gavetips.php om isauthorized() er deklarert der også ( se etter "function isauthorized() {" ) Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 (endret) // *** Restrict Access To Page: Grant or deny access to this page function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. der er det du sa, hva vil du at jeg skal gjøre med linjen? Endret 7. desember 2003 av WaBBiT Lenke til kommentar
Svendsen Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 kanskje DENNE hjelper litt Lenke til kommentar
Edorph Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 Uten å vite om dette er problemet eller ei: Hvis du finner dette: // *** Restrict Access To Page: Grant or deny access to this page function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && true) { $isValid = true; } } return $isValid; } .. i to eller flere filer, og de filene er flettet (inkludert i hverandre), kan du slette så det bare står et sted. Det er dette som er funksjonsdeklarasjonen, og så lenge den er identisk trenger du ikke deklarere den flere enn en gang.. Jeg trodde ikke det hadde noe å si, men det er kanskje verdt et forsøk.. Lenke til kommentar
Edorph Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 Altså, hvis function isAuthorized er deklarert i fila gavetips.php, trenger du ikke å deklarere den en gang til. Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 fjerner den delen fra admin.php men da er jo ikke den sikret lenger! jeg vil jo at admin.php skal kreve innlogging så det er jo ikke noen bra løsning!? Lenke til kommentar
Edorph Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 Joda, så sant function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { blahblah } finnes i gavetips.php vil den forsatt være sikret. require_once('Connections/gavetips.php'); inkluderer nemlig den koden som står i gavetips.php. Selve funksjonen blir ikke kjørt før PHP ser funksjonskallet, som i dette tilfellet er isAuthorized(); ..og det finner du i linja: if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'] ...... Lenke til kommentar
baRs Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 (endret) Jeg har forskjellige brukerniva på min side, der brukere har tilgang til forskjellige filer etter hvilken rang de har.. På loginsiden registrerer jeg $_SESSION["Brukernavn"] og $_SESSION["Brukerrang"] i session.. (brukerrang får jeg fra mysql db (tall fra 1-3), og brukernavn) på hver side jeg skal beskytte har jeg denne kodesnutten i toppen etter session_start() class valider { var $Bruker; var $RANG; function valider() { $this->Bruker = $_SESSION["Brukernavn"]; $this->RANG = $_SESSION["Brukerrang"]; } function auth($i) { if(!$this->Bruker) { header("Location: feil.php"); exit; } elseif($this->Bruker && $this->RANG < $i) { header("Location: feil.php"); exit; } } } $obj = new valider; $obj->auth(1); i funksjonen auth() sjekker jeg om brukeren er logget inn og om brukerrangen er ikke er mindre enn det den gjeldene siden krever.. For sette hvilke brukere som har tilgang til gjeldene side setter jeg bare tall fra 1-3 (der 3 er høyeste rang) her: $obj->auth(1); dette fungerer fint for meg, men vet ikke om det er 100% sikkert. Fint om noen kunne kommentere dette! Endret 7. desember 2003 av baRs Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 Joda, så sant function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { blahblah } finnes i gavetips.php vil den forsatt være sikret. require_once('Connections/gavetips.php'); inkluderer nemlig den koden som står i gavetips.php. Selve funksjonen blir ikke kjørt før PHP ser funksjonskallet, som i dette tilfellet er isAuthorized(); ..og det finner du i linja: if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'] ...... altså nå har jeg falt av for lenge siden! men det som er i filen connections/gavetips.php er bare tilkobling til mysql. jeg kan ikke lage en fil som blir inkludert i begge to fordi da får den samme feilmelding. admin.php skal ikke være tilgjengelig for noen uten å ha logget inn på index.php som da godkjenner innlogging og sender deg til gavetips.php som sjekker at du er logget inn og hvis du er logget inn som meg(WaBBiT) så skal admin.php inkluderes! men ingen skal kunne gå direkte til admin.php uten å logge inn som meg!!? hvordan skal jeg kunne få begge filene til å kreve at du har samme session uten at det kræsjer? Lenke til kommentar
Svendsen Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 hvis du bruker 10 min og ser på linken jeg posta regner jeg med at den løser dine problemer Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 oi beklager !! så ikke det lille innlegget skal sjekke det ut nå! thx Lenke til kommentar
Svendsen Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 oi beklager !! så ikke det lille innlegget skal sjekke det ut nå! thx nei vi små blir bare tråkka på vi Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 hmm da tuller mysql med meg!!! $q=("SELECT * from brukere where brukernavn=$brukernavn and passord=$password"); det er noe feil der men jeg er ikke så god i sql så jeg vet ikke hva som er feil men jeg vil tro at where brukernavn= skulle vært omgjort fordi etter det jeg kan tyde så sier den at det ikke finnes en kolonne som heter wabbit: Could not execute query : SELECT * from brukere where brukernavn=WaBBiT and passord=masse-rare-tall-og-bokstaver-i-md5-hashen.Unknown column 'WaBBiT' in 'where clause' noen som klarer å rette linjen ? Lenke til kommentar
Svendsen Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 (endret) sikker på at du bruker riktig navn på tabeller og variabler? prøv $q=("SELECT * from brukere where brukernavn='$brukernavn' and passord='$password'"); husk 'rundt' det variabler Endret 7. desember 2003 av Svendsen Lenke til kommentar
Skaptrollet Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 hvis jeg har 'sånne' rundt variablene blir de ikke tolket som variabler! da blir md5 hashen generert av $password og det kommer ikke noe brukernavn. eneste feilen nå når jeg ikke har 'rundt' brukernavn og passord blir at den ikke leter i riktig kolonne tror jeg Lenke til kommentar
Svendsen Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 (endret) hvis jeg har 'sånne' rundt variablene blir de ikke tolket som variabler!da blir md5 hashen generert av $password og det kommer ikke noe brukernavn. eneste feilen nå når jeg ikke har 'rundt' brukernavn og passord blir at den ikke leter i riktig kolonne tror jeg i tuten så har det rundt variabler... samme mener jeg at jeg brukte er vel bare hvis det er tall som skal inn i en "tall" post i db at man ikke skal bruke '' (eller er det bare i asp? da"") litt mer av koden hjelper kanskje Endret 7. desember 2003 av Svendsen 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å