Stephan: Probleme mit Sessions

Hi,

ich hab Probleme mit Sessions, wenn man eingeloggt ist, soll man eine andere Page bekommen, als wenn man ausgeloggt ist, aber es gibt auch noch Rechte verteilungen...

Auf jeden Fall macht er mit das nicht, woran liegt es?

________________
checkuser.php

<?php
    // Falls nicht vorhanden, generiert eine Session(datei)
    // auf dem Server.
    // Falls bereits vorhanden, liest Sessiondaten wieder ein und
    // (re-)initialisiert die gespeicherten Variablen.

@session_start();

// Erst wenn das Script terminiert(!), merkt PHP den Inhalt
    // der Variablen $s_userName und $s_userPermissions in
    // den Sessiondaten.
 include("config.inc.php");

$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");

$sql = mysql_query("SELECT * FROM user WHERE (name like '$username') AND (pass = '$password')", $db) or die('mySQL ERROR (' . __LINE__ . '): '.mysql_error());
$num_rows = mysql_num_rows ($sql);
if ($num_rows > 0) {
$datenrichtig = true;
$user_eingeloggt = true;
    $_SESSION['userName']        =   "$username";
    $_SESSION['userPermissions'] =   "$username";
} else {
$datenrichtig = false;
$user_eingeloggt = false;
}

?>
<html><head><title>CMS Login</title>
<meta name="generator" content="Namo WebEditor v5.0">
  <?php if ($datenrichtig) { ?>
  <meta http-equiv="Refresh" content="2; url=index.php">
  <?php } ?>
_____________________

Hier wird der User gecheckt und auch weitergeleitet, wenn die Daten OK sind...

Und das ist der eigendliche Teil:

_____________________
index.php

<?php

// Falls nicht vorhanden, generiert eine Session(datei)
    // auf dem Server.
    // Falls bereits vorhanden, liest Sessiondaten wieder ein und
    // (re-)initialisiert die gespeicherten Variablen.

@session_start();

// Gibt den Inhalt der wiederhergestellten Variablen aus.
 include("config.inc.php");
if (!isset ($_SESSION['userName']))
{
$intern = false;
} else {
$site = $_GET['us'];
$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");

$sql = mysql_query("SELECT name FROM user WHERE permissions_home LIKE 'ja'", $db) or die('mySQL ERROR (' . __LINE__ . '): '.mysql_error());
$num_rows = mysql_num_rows ($sql);
if ($num_rows > 0) {
 $intern = true;
} else {
$intern = false;
}

}
    // Wird in diesem Script kein unset() oder
    // session_destroy() ausgeführt, bleiben die Daten erhalten!
if ($permissions == true) {
?>

[hier HTML code]

<?php
}
else {
?>

[hier HTML Code 2]

<?
}
?>

____________________

Er zeigt mir immer nur HTML COde 2 an, woran liegt das?

Danke schon mal

Stephan

  1. Nabend,

    @session_start();

    Warum lässt du dir hier mögliche Fehler nicht anzeigen?

    $db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
    @mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");

    In die() macht sich immer ein mysql_error() gut

    $sql = mysql_query("SELECT * FROM user WHERE (name like '$username') AND (pass = '$password')", $db) or die('mySQL ERROR (' . __LINE__ . '): '.mysql_error());

    16.14. Warum soll ich nicht SELECT * schreiben?
    http://www.dclp-faq.de/q/q-sql-select.html

    <meta http-equiv="Refresh" content="2; url=index.php">

    Verwende doch lieber header().

    if ($permissions == true) {

    Wo setzt du $permissions?
    Setze error_reporting auf E_ALL damit dir auch Hinweise bezüglich nicht gesetzter Variabeln ausgibt.

    Bis denne,

    1. Hi,

      hab ich jetzt gemacht, keine Fehlermeldung, permissions hab ich in intern geändert. jetzt konnte aber jeder, auch normale user ändern...

      Grüße

      Stephan