Session Problem

Dolphon

Erfahrenes Mitglied
Moin
Ich hab da ein kleines Login Skript.
Das klappt auch soweit ganz gut, nach dem sich der user eingeloggt hat, kommt er
auf. die test.php (interne Seite)

hier mal der Coder von dieser Datei:


PHP:
<?php 
session_start(); 
if(!isset($_SESSION['user']) || $_SESSION['user'] == '') {


if ($_SESSION['frei'] == 0)
{
echo "Sie sind noch nicht freigeschaltet!" ;
}

header("location:index.php"); 
  die; 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
  <title>Sichere Seite</title> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center"> 
  <tr> 
    <td bgcolor="#e7e7e7" align="center"> 
    <?php echo "<b>Hallo ".$_SESSION['user']."</b>"; ?> 
<?php echo $_SESSION['frei']; ?>
    <br><br> 
<b>Handwerker eintragen!</b> 
    <br><br> 
<a href="eintragen1.php">Einrtagen</a> 
    <b>Hier ist der sichere Inhalt!</b> 
    <br><br> 
    <a href="logout.php">LogOut</a> 
    </td> 
  </tr> 
</table> 
</body> 
</html>
?>


Mein Problem ist das diese Code
PHP:
 if ($_SESSION['frei'] == 0)
{
echo "Sie sind noch nicht freigeschaltet!" ;
}
nicht klappt. wenn Frei 0 ist, dann soll der die eine Meldung auspucken
nur leider scheint er das garnicht zu beachten. Außerdem wenn man nur die Datei test.php dann wird diese Meldung ausgepsuckt. Dies soll aber nciht geschehen. und dadurch leitet er nicht weiter auf die index.php
MFG

Dolphon
 
Zuletzt bearbeitet:
also....

zuerstmal währe es interessant zu wissen wo die daten denn her kommen... das heißt sind sie ordendlich in die session geschrieben worden....

dein location problem ist einfach...
2 fehler in einer zeile...
nach dem : in einem HTTP header gehöhrt IMMER ein leerzeichen
außerdem muss in einem location header die VOLLE URL einer datei angegeben werden...
richtig währe es also so:
header("location: http://www.domain.de/index.php");
 
Original geschrieben von shorty
Also ich nutze header(); auch und ich verwende keine vollen Urls...
Bsp.: header("location: news.php");
Und dennoch ist es nicht korrekt und muss daher auch nicht von jedem HTTP/1.1 konformen Client in der gewünschten Form interpretiert werden..
Siehe RFC 2616 (HTTP/1.1) 14.30:
The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.
Peter
 
also hier kommen die Daten her:

PHP:
<?php 
session_start(); 
require("config.inc.php"); 

if(!($db = mysql_connect($db_host, $db_user, $db_pass))) //baue datebankverbindung auf 
  die(mysql_error());  //wenn nicht geht, gib fehlermeldung aus 
else //wenn doch geht 
{ 
  if(!mysql_select_db($db_name, $db)) //wähle datenbank aus 
      die(mysql_error());   //wenn das nicht geht, gib fehler aus 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 
<?php if(!isset($_POST['submit'])) { ?> 
<form action="<?php $PHP_SELF ?>" method="post"> 
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center"> 
  <tr> 
    <td bgcolor="#e7e7e7" align="center" colspan="2"> 
    <b>Bitte erst anmelden</b> 
    </td> 
  </tr> 
  <tr> 
    <td width="170" bgcolor="#e7e7e7">Benutzername</td> 
    <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] !=  
"" ) {echo ' value="'.$_POST['username'].'"';} ?>></td> 
  </tr> 
  <tr> 
    <td width="170" bgcolor="#e7e7e7">Passwort</td> 
    <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td> 
  </tr> 
  <tr> 
    <td bgcolor="#e7e7e7" align="center" colspan="2"> 
    <input type="submit" name="submit" value="Anmelden" class="button"> 
    </td> 
  </tr> 
</table> 
</form> 
<?php 
}elseif(!$_POST['username'] || $_POST['username'] == "") { 
  echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php">Zurück</a></p>'; 
}elseif(!$_POST['password'] || $_POST['password'] == "") { 
  echo '<form action="index.php" method="post">'; 
  echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>'; 
  echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 
  echo '<input type="submit" name="zurueck" value="Zurück">'; 
  echo '</p>'; 
  echo '</form>'; 
}else{ 
  $password = md5($password); 
  $query = @mysql_query("SELECT user, pw, frei FROM handwerker WHERE user = '".$_POST['username']."'") or die('Select ist 
fehlgeschlagen!'); 
  $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a 
href="index.php">Zurück</a></p>'); 
  if($password != $result['pw']){ 
    echo '<form action="index.php" method="post">'; 
    echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>'; 
    echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 
    echo '<input type="submit" name="zurueck" value="Zurück"></p>'; 
    echo '</form>'; 
    die; 
  }else{ 
    $_SESSION["user"] = $result["user"];
    $_SESSION["frei"] = $result["frei"];
    echo '<p align="center">LogIn erfolgreich! :-)<br><br><a href="test.php">Weiter</a></p>'; 
  } 
} 
?> 
</body> 
</html>

Dieser Codeteil (Siehe Beitrag weiter oben) soll halt nur bestimtme user den zugriff auf eien Zeite gewähren.
1. nur denen die eingeloggt sind
2. nur denen wo frei keine 0 ist.
 
du überträgst keine session ID?

kann nich gut gehen wenn der user cookies abgeschaten hatt... weil ich nehme mal an trans-sid is abgeschalten....

also schick bitte mal session_name()."=".session_id() mit.
 
Kleine Änderung am Code:
PHP:
echo '[...]<a href="test.php?'.session_name().'='.session_id().'">Weiter</a>[...]';

Dann entsteht z.B. ein solcher Link:
test.php?sid=21rf21e512re74s5145415ed154efer4

Viel Spaß!
Guten Rutsch!
 
Zurück