• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

php - session

simon4ever

Guest
so ich hab ein problem, das ich früher komischweise nicht hatte ^^

und zwar: das auslesen einer in der session gespeicherten variable. ist ein billiges login script, dass eben auf der hauptseite dann hallo "XYZ" ausspuckt. (der name wird zuerst mit md5 pw abgeglichen etc).

komischerweise steht seit kurzem einfach nur noch hallo da, während früher hallo xyz da stand. deshalb fehlen bei newsposts jetzt auch die namen usw.

ich wittere: update der php version, anders kann ichs mir eigentlich nicht erklären.
beim login wird der nickname eben registriert.
$nick = $row['nick'];
session_register('nick');

wunderbar.

jetzt wird natürlich auf jeder anschließenden seite, die in dem loginbereich liegt, der befehl session_start() ausgeführt - noch bevor irgendetwas anderes gemacht included oder sonstwas wird.

und jetzt kommt, glaube ich zumindest, der knackpunkt: das auslesen:
am anfang wird natürlich noch überprüft ob die session registriert wurde, wenn nicht fliegt man raus. ich hab da jetzt:

hallo ".$_SESSION('nick').", du befindest...

früher hats geklappt, jetzt nichtmehr. konnte auch auf php.net nichts finden im session abteil.

thx leute :)
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
$_SESSION['nick'] = $nick;

Das dürfte es viel einfacher machen. Aber das nur so nebenbei.
Wäre nett, wenn du mal das Loginscript posten würdest, damit man sich da reindenken kann. Allein so vom erzählen fällt mir auch kein Fehler auf.
 

simon4ever

Guest
also passwort und loginname werden an checkuser.php geschickt und dort überprüft:

if ((!isset($_POST['nick'])) OR (!isset($_POST['passwort'])))
{
die ("name oder passwort fehlt !");
}
$sql = "SELECT id, nick, passwort, status FROM members WHERE nick = '".$_POST['nick']."'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$status[] = $row['status'];
if (!$row)
{
die ("unbekannter name !");
}
if ($row['passwort'] <> md5($_POST['passwort']))
{
die ("falsches passwort !");
}
if(!in_array("orga", $status))
das verhindert nur, dass sich jeder beliebige einloggen kann, sondern eben nur members und orgas
{
if(!in_array("member", $status))
{
die ("".$_POST['nick'].", du hast nicht die nötigen rechte um diese seite zu betreten !");
}
}
$nick = $row['nick'];
session_register('nick');
echo("hallo ".$_POST['nick'].", du wurdest erfolgreich eingeloggt ! ");
echo "<script language=\"JavaScript\">
window.setTimeout('window.location.href=\"admin.php\"','1000')</script>weiterleitung erfolgt ... ";


falls das alles passt gehts weiter

<?
session_start();
?>
<?
include("admin_header.php");
include("db_connect.php");
if (! session_is_registered('nick'))
{
die ("du hast keine rechte um diese seite zu betreten");
}
echo("hallo $nick, du befindest dich im admin panel...bla");
?>
<?
include("footer.php");
?>


ich habe das $_SESSION['nick'] übrigens schon versucht, half nichts.

kann es sein, dass am server in der php.ini was mit den session ausgeschaltet oder umgestellt wurde ?
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Hmm ich bin nicht sicher, aber folgende Sachen würde ich ändern.

1. Session starten, BEVOR du Pass und Nick übrprüfst.
2. " echo("hallo $nick, du befindest dich im admin panel...bla"); " $nick -> $_SESSION['nick'] !!!
3. Da du mit $_POST[nick] arbeitest ( echo("hallo ".$_POST['nick'].", du wurdest erfolgreich eingeloggt ! "); ), scheint an deinem Input was nicht zustimmen, wenn kein Nick übergeben wird!
 

Sas~iN~LoVe

Guest
auch auf die gefahr hin mich total lächerlich zu machen, weil ich eigentlich kein php kann:

muss man nicht ab irgend einer version mit $_GET["nick"] auf variablen zugreifen statt einfach mit $nick?
 

simon4ever

Guest
danke :)

zu 1. die session wird vorher gestartet, direkt am anfang der checkuser.php (du meinst die doch ?)

2. $_SESSION['nick'] ändert auch nichts

3. mh... komischerweise gings früher.

also danke für deine hilfe, aber vielleicht frage ich am besten bei dem typen nach, der das für mich gehostet hat. habe nämlich jetzt alles durchprobiert und nichts hat sich geändert.

$_GET wäre richtig, wenn die weiterleitung so wäre: xyz.php?nick=test
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Naja ist schwer zu erkennen, was davon jetzt welche Datei ist :D


@Sas~iN~LoVe: $_GET funktioniert nur bei Übergaben über den Link bzw die URL.
 

simon4ever

Guest
stimmt, sorry

der obere eintrag, bei dem überprüft wird ob username und pw zusammenpassen (sofern der user existiert) ist die checkuser.php. die session fängt ganz am anfang an.

checkuser.php:
Code:
<?
session_start();
?>
<?
include("db_connect.php");
if ((!isset($_POST['nick'])) OR (!isset($_POST['passwort']))) 
{ 
die ("name oder passwort fehlt !"); 
}
$sql = "SELECT id, nick, passwort, status FROM members WHERE nick = '".$_POST['nick']."'"; 
$result =  mysql_query($sql);
$row =  mysql_fetch_array($result,MYSQL_ASSOC);
$status[] = $row['status'];
if (!$row) 
  { 
die ("unbekannter name !"); 
  }
if ($row['passwort'] <> md5($_POST['passwort'])) 
  { 
die ("falsches passwort !"); 
  }
if(!in_array("orga", $status))
  {
  if(!in_array("member", $status))
   {
   die ("".$_POST['nick'].", du hast nicht die nötigen rechte um diese seite zu betreten !");
   }
  }
$nick = $row['nick'];
session_register('nick'); 
echo("hallo ".$_POST['nick'].", du wurdest erfolgreich eingeloggt ! ");
echo "<script language=\"JavaScript\">
		window.setTimeout('window.location.href=\"admin.php\"','1000')</script>weiterleitung erfolgt ... ";
?>

die meintest du doch mit session am anfang starten ?
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
häng das hier mal an session_start();

ini_set('session.use_cookies', TRUE);
 

simon4ever

Guest
jetzt gehts. vielen dank, hast mir sehr weitergeholfen :)
 
Oben