PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Session ; Er startet garkeine o_O



dadie
13.03.2005, 14:31
Hallo ,

Ich code gerade am Admin Menu für CMS-D (Sihe Sig) nun will ich mich auf Neues Terra Trauen Sessions mit Cookie Ergo wenn Cookie off ist wird Session benutz.Nur Irgentwie Startet er keine Session bzw. Ich habe woll Irgentwas Falsch gemacht hier mein Bisheriger Code (es ist nur ein Ausschnitt )




session_start();

include("../config.php") ;

if(isset($_POST["login"]))
{

$admincookie = "$nickname@$pwd";;
setcookie("CMS_D", $admincookie,time()+3600);

$_SESSION['nickname'] = "$nickname" ;
$_SESSION['pwd'] = md5($pwd) ;

header ('Location: index.php?=SID');
}

$cookielesen = preg_split("/@/", $CMS_D) ;

$nickname = $cookielesen [0];
$pwd = md5($cookielesen[1]);


if($nickname == "")
{
$nickname = $_SESSION['nickname'];
$pwd = $_SESSION['pwd'];
}


Ich weiss zwar das if($nickname == "") keine tolle Lösung ist aber mir fliel nix anderrs ein um zu sehn ob der User Cookies an hat ohne die Grundstrucktur des Codes Komplett auf den Kopf zustellen.

Naja aufjeden fall gitb er nur =SID weiter das sollte er aber nicht oder ?

Mfg Dadie.

btw.Ich wette Ork weiss es -.-

wrtlprnft
13.03.2005, 15:18
Du weißt erst, ob das Cookie angenommen wurde, wenn die Seite irgendwie neu geladen wurde. Davor ist zwar die Cookie- Variable gesetzt, aber beim Nächsten Aufruf ist sie verschwunden.
Am besten, du setzt einfach auf der Loginseite ein Testcookie und überprüfst dann das.

codec
13.03.2005, 19:30
Ich seh da auch garkein session_start(); oder hab ich wieder mal was verpeilt?

wrtlprnft
13.03.2005, 19:35
Ich seh da auch garkein session_start(); oder hab ich wieder mal was verpeilt?Ganz am Anfang, obwohl es eigendlich wennschon in das if gehören würde.

dead_orc
14.03.2005, 16:20
Um die SID per URL zu übergeben, muss du die Konstante SID anders verwenden:

header('Location: index.php?'.SID);
Oder per session-Funktionen:

header('Location: index.php?'.session_name().'='.session_id());

dadie
14.03.2005, 16:39
OK nun übergibt der die Session ID doch das Hilft mir Herzlich wennig weil er keine Variablen Speichern will ;_;



echo "$pwd GHG $nickname <br>s" ;

include("../config.php") ;

if(isset($_POST["login"]))
{

session_start();


$pwd = md5($pwd) ;
$admincookie = "$nickname@$pwd";;
setcookie("CMS_D", $admincookie,time()+3600);
$_SESSION['pwd'] = $pwd ;
$_SESSION['nickname'] = $nickname ;
// header('Location: index.php?'.session_name().'='.session_id());
}

$cookielesen = preg_split("/@/", $CMS_D) ;

//$nickname = $cookielesen [0];
//$pwd = $cookielesen[1];


$pwd = $_SESSION['pwd'] ;
$nickname = $_SESSION['nickname'] ;

echo "$pwd GHG $nickname<br>" ;


So habe ich es nun umgecoded sobald ich das // bei header wegmache übergibt der die Session ID aber keiner lei Variablen die ich gespeichert habe werden angezeigt -_-

Wenn ich ohne header arbeite Zeigt er mir was an jedoch ändert sich das md5 Gecryptete PWD ewig aber warum ? IMO wie soll ich ein PWD Vergleichen wenn es sich immer ändert ^^°

Chocwise
14.03.2005, 17:12
Versuch mal $_SESSION[pwd], $_SESSION[nickname] usw.. Also ohne '.
Frag nicht, ist nur eine Vermutung.
Außerdem muss auch eine Session gestartet werden wenn $_POST["login"] nicht gesetzt ist. Andenfalls werden Session-Variablen nicht verfügbar sein.
Also session_start(); unter include("../config.php") ; packen, außerhalb des If-Konstrukts.

Tomarus
14.03.2005, 17:17
Hmm ... das Problem, dass es mit so einer einfach Zuweisung nicht klappen will, hatte ich neulich auch. Ich hab die Session-Variable dann vorher nochmal auf die alte Weise registriert, dann ging's ...


session_register ('password');
session_register ('username');
$_SESSION['password'] = $password;
$_SESSION['username'] = $username;

dadie
14.03.2005, 17:45
Ok

1,Es klappt ich musste die Variablen erst Registrieren (Gott ich ahbe doch PHP 5 drauf was will mein Apachie nur ? )

2,Das tuht aber nichts zur sache das er per md5 das wort z.B. hund erst in
57b7bb96e53980967f54852f7bec6e9d umwandelt dann aber mein Nägsten Login in
2d2c0cbb4c27a98a87b234866745fb81 das Hilft mir sellten wennige und bisher ist das noch nie passiert warum jetzt ?

Code :



<?php

echo "$pwd GHG $nickname <br>s" ;

include("../config.php") ;

session_start();

if(isset($_POST["login"]))
{



session_register ('nickname');
session_register ('pwd');
$pwd = md5($pwd) ;
$admincookie = "$nickname@$pwd";;
setcookie("CMS_D", $admincookie,time()+3600);
$_SESSION['pwd'] = $pwd ;
$_SESSION['nickname'] = $nickname ;
//header('Location: index.php?'.session_name().'='.session_id());
}

$cookielesen = preg_split("/@/", $CMS_D) ;

//$nickname = $cookielesen [0];
//$pwd = $cookielesen[1];


$pwd = $_SESSION['pwd'] ;
$nickname = $_SESSION['nickname'] ;

echo "$pwd GHG $nickname<br>" ;

Manni
14.03.2005, 19:28
Kann es sein, dass du das bereits verschlüsselte Passwort noch einmal verschlüsselst?
Dann käme nämlich immer etwas anderes raus... ;)

Chocwise
14.03.2005, 19:40
Hmjoa... oder register_globals sind off und $pwd wird nicht übernommen. In dem Fall $pwd durch $_POST["pwd"] ersetzen.
Auch aus "" (nichts) kann man einen md5-Hash errechnen lassen.

dadie
15.03.2005, 16:01
Also da es ewig nur Errors gibt um Cookie und Session zusammen bzw. als Alternative zu nutzen will ich nun komplett auf Session umsteigen jedoch ist die Frage unterstütz jeder Host Sessions oder ist das eine Funktion die woll ehr aus als an ist bei Hosts ?

Chocwise
15.03.2005, 16:25
Hmjoa... oder register_globals sind off und $pwd wird nicht übernommen. In dem Fall $pwd durch $_POST["pwd"] ersetzen.
Auch aus "" (nichts) kann man einen md5-Hash errechnen lassen.
Puh... *kratzambart*
Schwer zu sagen. Sessions gehen ein wenig zu Lasten der Server-Performance, nur ist das heute weniger ein Problem mehr wie bei älteren Servergenerationen. Von Sicherheitsbedenken im Zusammenhang mit Sessions auf Systemebene wüsste ich auch nichts. Ich denke mal, das viele Free-Hosts die PHP bieten auch Sessions erlauben, kostenpflichtige Hosts sowieso. Allerdings variieren die Settings zu den Sessions sicherlich sehr stark von Host zu Host. So sollte man sich z.B. nicht immer darauf verlassen das SID immer den Sessionnamen und die Sesson-ID enthält. So kann es auch PHPSESSID heißen, das ist AFAIK so bei der Standardkonfiguration. Auch kann das automatische Anbieten eines Sessioncookies deaktiviert sein.
Also achte am besten beim Scripten schon darauf diese Variationen abzufangen.
Lies dazu nochmal die Artikel zu den sessions im Manual und schau vielleicht auch mal in die phpinfo() deines derzeitigen Hosts.