Avatar billede plaq Nybegynder
05. december 2003 - 12:53 Der er 28 kommentarer og
1 løsning

Session/ mysql problemer

Hej
jeg har et problem med dit login / session / mysql

her kommer koden:

login:

<center>
<form method='post' action='login_ok.php'>
Brugernavn :
<input type='text' name='brugernavn' size='15'><br>
Password :
<input type='password' name='pass' size='15'><br>
<input type='submit' name='login' value='Login'>

</form>

login_ok.php:

<?
$brugernavn = $_post[brugernavn];
$pass = $_post[pass];
session_start();
session_register("brugernavn");
session_register("pass");

include("config.php");
Session_register("brugernavn","pass");
if(!empty($_SESSION[brugernavn]) && !empty($_SESSION[pass])){

$query = mysql_query("SELECT * FROM users  WHERE brugernavn = '$_SESSION[brugernavn]'  and pass ='$_SESSION[pass]' ") or die(mysql_error());
while($row = mysql_fetch_array($query)) {

if($row[status] =='Admin'){
echo"Du er admin";
}
else if($row[status] =='Bruger'){
echo"Du er en brugere";
  }
}
}

?>

den skulle jo gerne skrive at man var admin eller bruger..
men det gør det ikke kan ikke lige finde fejlen håber i kan hjælpe mig..=)

/PlaQ
Avatar billede plaq Nybegynder
05. december 2003 - 13:37 #1
glemt lige at slette Session_register("brugernavn","pass"); mellem include og if funktionen.. =)
Avatar billede Slettet bruger
05. december 2003 - 13:51 #2
For det første bør du ikke bruge while til dit tjek.

if (mysql_num_rows($query)==1)
Avatar billede Slettet bruger
05. december 2003 - 13:56 #3
Her er en længere udgave:

if (mysql_num_rows($query)==1) {
  $row=mysql_fetch_assoc($query);
  echo "Du er {$row['status']}";
}

Og i denne linie tjekker du de forkerte variabler.

if(!empty($_SESSION[brugernavn]) && !empty($_SESSION[pass])){

Den burde have været:

if(!empty($brugernavn) && !empty($pass)){
Avatar billede plaq Nybegynder
05. december 2003 - 13:59 #4
har lige prøvet det snadbox men det er den samme blanke side jeg får..
Avatar billede plaq Nybegynder
05. december 2003 - 14:01 #5
grunden til at jeg bruger
if($row[status] =='Admin'){
echo"Du er admin";
}
else if($row[status] =='Bruger'){
echo"Du er en brugere";
  }

er for at ha muglighed for at udbygge det så jeg får admin-menu frem når admin loger ind.. =)
Avatar billede Slettet bruger
05. december 2003 - 14:10 #6
Her er en lidt bedre:

if (mysql_num_rows($query)==1) {
  $row=mysql_fetch_assoc($query);
  echo "Du er {$row['status']}";
  $_SESSION['erAdmin']=($row['status']=='Admin');
}

Så kan du altid andre steder i din kode have steder med noget i denne stil:

if ($_SESSION['erAdmin']){
  //her er kode, som kun Admin skal se
}
Avatar billede plaq Nybegynder
05. december 2003 - 14:13 #7
hvorfor flytter den mig bare hele tied over til en blank side.. fatter det ikke..
Avatar billede plaq Nybegynder
05. december 2003 - 14:14 #8
tied= teden.. =)
Avatar billede plaq Nybegynder
05. december 2003 - 14:15 #9
Flot... tiden.... =)
Avatar billede Slettet bruger
05. december 2003 - 14:15 #10
<?php
$brugernavn = $_POST['brugernavn'];
$pass = $_POST['pass'];
session_start();
include("config.php");

if(!empty($_SESSION[brugernavn]) && !empty($_SESSION[pass])){

$query = mysql_query("SELECT * FROM users  WHERE brugernavn = '{$_SESSION['brugernavn']}'  and pass ='{$_SESSION['pass']}' ") or die(mysql_error());

if (mysql_num_rows($query)==1) {
  $row=mysql_fetch_assoc($query);
  echo "Du er {$row['status']}";
  $_SESSION['erAdmin']=($row['status']=='Admin');
} else {
  echo "Du er ikke logget ind!";
}

} else {
echo "Der er gået noget galt:\n";
print_r($POST);
}
?>
Avatar billede Slettet bruger
05. december 2003 - 14:16 #11
Den skulle gerne give noget fejl-output.
Avatar billede Slettet bruger
05. december 2003 - 14:18 #12
Og et tip: brug $_SESSION['variabelnavn'] i stedet for session_register(variabelnavn)
Avatar billede plaq Nybegynder
05. december 2003 - 14:20 #13
jeg skal da register den før jeg kan bruge den..
Avatar billede plaq Nybegynder
05. december 2003 - 14:22 #14
fedt nu siger den der gået noget galt men hva??
Avatar billede plaq Nybegynder
05. december 2003 - 14:24 #15
efter jeg har slettet mit og lagt dit ind så skriver den hele tiden at der er gået noget galt...
Avatar billede plaq Nybegynder
05. december 2003 - 14:30 #16
kan det være at problemet liger i min db?? eller hva for der kan da ikke få noget galt i en post funktion..
Avatar billede Slettet bruger
05. december 2003 - 14:38 #17
Nej, det ligger ikke i din db.

"Der er gået noget galt:" bliver udskrevet, når if(!empty($_SESSION[brugernavn]) && !empty($_SESSION[pass]))-linien fejler, og der er din db ikke blevet rørt ved endnu.

Og nej. session_register er til at lave automatiske variable når sessionen startes. Hvis man har en session_register('navn'), vil den automatisk lave en $navn, når man starter sin session, og når scriptet slutter vil den gemme værdien. Problemet er bare, at det kræver at register_globals er slået til, og at så kan man ikke kende forskel på om $navn kommer fra en POST, en cookie eller fra en session.

Hvis man benytter en variabel som $_SESSION['navn'] skal den ikke registreres.
Avatar billede Slettet bruger
05. december 2003 - 14:40 #18
Måske din config.php laver noget skidt? Må jeg se den? (Bare skriv XXX istedet for eventuelle passwords.)
Avatar billede plaq Nybegynder
05. december 2003 - 14:52 #19
det må du godt køre den kun på foxserv...

<?
mysql_connect("localhost","PlaQ","fun4you");
mysql_select_db("plaq")

?>
Avatar billede Slettet bruger
05. december 2003 - 14:57 #20
Jeg havde klippe-klistret forkert... Denne burde virke bedre

<?php
$brugernavn = $_POST['brugernavn'];
$pass = $_POST['pass'];
session_start();
include("config.php");

if(!empty($brugernavn) && !empty($pass)){

$query = mysql_query("SELECT * FROM users  WHERE brugernavn = '{$_SESSION['brugernavn']}'  and pass ='{$_SESSION['pass']}' ") or die(mysql_error());

if (mysql_num_rows($query)==1) {
  $row=mysql_fetch_assoc($query);
  echo "Du er {$row['status']}";
  $_SESSION['erAdmin']=($row['status']=='Admin');
} else {
  echo "Du er ikke logget ind!";
}

} else {
echo "Der er gået noget galt:\n";
print_r($POST);
}
?>
Avatar billede Slettet bruger
05. december 2003 - 14:59 #21
Der hvor $_SESSION['erAdmin'] bliver sat, kan man passende sætte andre sessionsvariable, som f.eks. $_SESSION['brugernavn']
Avatar billede plaq Nybegynder
05. december 2003 - 15:00 #22
nu skriver den du er ikke logget ind...
Avatar billede Slettet bruger
05. december 2003 - 15:04 #23
Og endnu en gang...

<?php
$brugernavn = $_POST['brugernavn'];
$pass = $_POST['pass'];
session_start();
include("config.php");

if(!empty($brugernavn) && !empty($pass)){

$query = mysql_query("SELECT * FROM users  WHERE brugernavn = '{$brugernavn}'  and pass ='{$pass}' ") or die(mysql_error());

if (mysql_num_rows($query)==1) {
  $row=mysql_fetch_assoc($query);
  echo "Du er {$row['status']}";
  $_SESSION['erAdmin']=($row['status']=='Admin');
} else {
  echo "Du er ikke logget ind!";
}

} else {
echo "Der er gået noget galt:\n";
print_r($POST);
}
?>
Avatar billede Slettet bruger
05. december 2003 - 15:06 #24
En anden, der kan være smart at bruge er noget i stil med $_SESSION['erLoggetInd']=TRUE; Denne vil kunne bruges på samme måde som $_SESSION['erAdmin']
Avatar billede plaq Nybegynder
05. december 2003 - 15:11 #25
jubiiiiiiiiii
Avatar billede plaq Nybegynder
05. december 2003 - 15:15 #26
hvordan kan jeg få den begge til at virke?? på en gang sådan at login punktet forsvinder når man har fået en godkendt login??
Avatar billede Slettet bruger
05. december 2003 - 15:19 #27
Indsæt denne i samme if-blok, som $_SESSION['erAdmin']=($row['status']=='Admin');

$_SESSION['erLoggetInd']=TRUE;

Så skal du bare skrive

if (!$_SESSION['erloggetInd'] {

}

uden om din login-boks. (Husk at starte session på den side også)
Avatar billede plaq Nybegynder
05. december 2003 - 15:24 #28
mange tak for hjælpen... skal du have nogel points??
Avatar billede Slettet bruger
05. december 2003 - 15:27 #29
Tjoh, bare for en ordens skyld.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester