07. juli 2006 - 23:59
Der er
24 kommentarer
Session vil ikke virke.
<?php include("denner.php"); ?> <?php session_start(); $conn = mysql_connect("$host", "$user", "$pass") or die (mysql_error()); mysql_select_db("$db", $conn) or die (mysql_error()); $dato = date("d-m-Y H:i", time()); $sql = "UPDATE login2 SET online='". $dato ."' WHERE `brugernavn` ='". $_POST[brugernavn] ."'"; mysql_query($sql,$conn) or die(mysql_error()); if(isset($_POST["brugernavn"], $_POST["password"])) { $dotjek = mysql_query("SELECT `brugernavn`, `password`, `admin` FROM `login2` WHERE `brugernavn` ='". $_POST[brugernavn] ."'") or die (mysql_error()); $brugertjek = mysql_fetch_object($dotjek); if($brugertjek->brugernavn != $_POST["brugernavn"]) { $_SESSION["navne_fejl"] = 1; header("Location:logind.php"); exit; } $_SESSION["brugernavn"] = $_POST["brugernavn"]; if($brugertjek->password != md5($_POST["password"])) { $_SESSION["password_fejl"] = 1; header("Location:logind.php"); exit; }else{ if($brugertjek->admin = Admin) { header("Location:admin.php"); exit; }else{ if($brugertjek->admin != Admin) { header("Location:login.php"); exit; } mysql_free_result($dotjek); } ?> ------------------------------ Den skriver denne fejl: Parse error: parse error, unexpected $ in /home/virtual/min hp/public_html/make_logind.php on line 41 I følge scriptet er linje 41: ?> Jeg vil gerne have at admins bliver sendt vidre til admin.php og alm. brugere til login.php .. Håber der er nogle som kan hjælpe.
Annonceindlæg fra Academic Work Denmark A/S
Du har 2 else -> if() { ... } else { ... } else { ... } Den duer ikke...
Ah, det du vil er nok at ændre disse 2: }else{ if($brugertjek->admin = Admin) { til: }elseif($brugertjek->admin = Admin) {
Hvilken så gælder for begge dine "else'r".
Nu vil den slet ikke logge ind :|
Har du prøvet at indsætte nogle echo'er rundt omkring så du ved, om den kommer ind i de if'er du tror den gør?
Det har jeg lige prøver, men den logger ikke ind på nogen måde.
Kommer den ind i de if'er, hvor den burde logge dig ind? I debug fasen kan det være ekstremt uoverskueligt hvis du hele tiden bliver sendt omkring med header() - eller det synes jeg i hvert fald...
Jeg tror ikke den kommer ind. Vil du prøve at lave det, som du tror ville virke?
Jeg ved ikke hvad $brugertjek->brugernavn indeholder og hvor det kommer fra, så det er lidt svært...
08. juli 2006 - 00:34
#10
$dotjek = mysql_query("SELECT `brugernavn`, `password`, `admin` FROM `login2` WHERE `brugernavn` ='". $_POST[brugernavn] ."'") or die (mysql_error()); $brugertjek = mysql_fetch_object($dotjek);
08. juli 2006 - 00:34
#11
Hvis man er admin står der i mysql. Tabel: Admin, text Admin.
08. juli 2006 - 00:39
#12
Ah ja ok, men du har en fejl i linien: }elseif($brugertjek->admin = Admin) { skal være: }elseif($brugertjek->admin == "Admin") { og den næste != "Admin"
08. juli 2006 - 00:44
#13
Fatter det ikke, den virker stadig ikke.. hm.. Hvad kan være galt :|
08. juli 2006 - 00:44
#14
Prøv lige at paste din kode igen.
08. juli 2006 - 00:47
#15
<?php include("denner.php"); ?> <?php session_start(); $conn = mysql_connect("$host", "$user", "$pass") or die (mysql_error()); mysql_select_db("$db", $conn) or die (mysql_error()); $dato = date("d-m-Y H:i", time()); $sql = "UPDATE login2 SET online='". $dato ."' WHERE `brugernavn` ='". $_POST[brugernavn] ."'"; mysql_query($sql,$conn) or die(mysql_error()); if(isset($_POST["brugernavn"], $_POST["password"])) { $dotjek = mysql_query("SELECT `brugernavn`, `password`, `level` FROM `login2` WHERE `brugernavn` ='". $_POST[brugernavn] ."'") or die (mysql_error()); $brugertjek = mysql_fetch_object($dotjek); if($brugertjek->brugernavn != $_POST["brugernavn"]) { $_SESSION["navne_fejl"] = 1; header("Location:logind.php"); exit; } $_SESSION["brugernavn"] = $_POST["brugernavn"]; if($brugertjek->password != md5($_POST["password"])) { $_SESSION["password_fejl"] = 1; echo "Fejl (:"; header("Location:logind.php"); exit; }elseif($brugertjek->level == "Admin") { echo "Hej Admin"; header("Location:admin.php"); exit; }elseif($brugertjek->level != "Admin") { echo "Hej Bruger"; header("Location:login.php"); exit; } mysql_free_result($dotjek); } ?> ------- Jeg har rettet $brugertjek->admin til $brugertjek->level .. Da jeg huskede forkert, men den vil stadig ikke..
08. juli 2006 - 00:49
#16
session_start(); skal være der inden nogetsomhelst returneres til browseren ... så blot for en sikkerhedskyld ... <?php session_start(); include("denner.php");
08. juli 2006 - 00:50
#17
08. juli 2006 - 00:51
#18
Umiddelbart synes jeg det virker som om at den aldrig kommer ind i den her: if(isset($_POST["brugernavn"], $_POST["password"])) { Sikker på at den gør det?
08. juli 2006 - 00:54
#19
Det er via en anden fil. <form action="make_logind.php" method="post"> <font face="verdana" size="1" color="#555555">Brugernavn:</font><br> <input type="text" name="brugernavn" value="<?php echo $value; ?>"><br> <font face="verdana" size="1" color="#555555">Password:</font><br> <input type="password" name="password"><br> <input type="submit" value="Log ind"><br> </form>
08. juli 2006 - 00:59
#20
Ja, men jeg synes du skal udskrive diverse variabler du bruger, og se om de indeholder det du tror de gør. echo $brugertjek->admin; echo $_POST['brugernavn']; og alle de andre variabler du bruger.
08. juli 2006 - 01:06
#21
Det er bare, at der ikke sker noget efter jeg trykker Log ind. Den forbliver blank, så jeg har ingen anelse om, hvordan det skal laves ellers. Jeg er ret ny i php verdenen. Men jeg smutter i seng nu, så kan vi lige kigge på det i morgen.
08. juli 2006 - 01:09
#22
Ok, men så vil jeg næsten gætte på, at problemet er som jeg skrev kl. 00.51.12. Men sov godt, så prøver vi/du i morgen...
08. juli 2006 - 04:27
#23
var_dump($_POST) ~ så kan du se om alt er med :-)
08. juli 2006 - 11:45
#24
<?php include("denner.php"); ?> <?php session_start(); $conn = mysql_connect("$host", "$user", "$pass") or die (mysql_error()); mysql_select_db("$db", $conn) or die (mysql_error()); $dato = date("d-m-Y H:i", time()); $sql = "UPDATE login2 SET online='". $dato ."' WHERE `brugernavn` ='". $_POST[brugernavn] ."'"; mysql_query($sql,$conn) or die(mysql_error()); if(isset($_POST["brugernavn"], $_POST["password"])) { $dotjek = mysql_query("SELECT `brugernavn`, `password`, `admin` FROM `login2` WHERE `brugernavn` ='". $_POST[brugernavn] ."'") or die (mysql_error()); $brugertjek = mysql_fetch_object($dotjek); if($brugertjek->brugernavn != $_POST["brugernavn"]) { $_SESSION["navne_fejl"] = 1; header("Location:logind"); exit; } $_SESSION["brugernavn"] = $_POST["brugernavn"]; if($brugertjek->password != md5($_POST["password"])) { $_SESSION["password_fejl"] = 1; header("Location:logind"); exit; }else{ $_SESSION["admin"] = $brugertjek->admin; header("Location:login"); exit; } mysql_free_result($dotjek); } ?> Den virker, med at logge ind osv. Jeg forstår bare ikke hvorfor det er admin der bliver brugt, når det er level den skal tjekke. I mit admin felt i mysql den er tom.
Vi tilbyder markedets bedste kurser inden for webudvikling