php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.11.2008, 15:06  
Neuer Benutzer
 
Registriert seit: 17.11.2008
Beiträge: 20
BigDaddyXD befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Cookies funktionieren nicht...

Hallo Leute,

langsam bin ich am verzweifeln, und ihr seid meine letzte Hoffnung.
Bisher habe ich die Sitzungsverwaltung meiner Website auschliesslich
über $session gelöst. Einige User hatten aber nun den Wunsch ihre
Sitzungenlänger "haltbar" zu machen. Daher möchte ich sie Session-ID
nun in einem Cookie abspeichern...

Aber aus irgendeinem Grund wird der Cookie nicht gespeichert (Dabei nehme ich mit dem Browser derzeit ALLE Cookies an!).

Am Besten zeige ich euch mal die Codeschnipsel meiner Login-Verwaltung (Website dazu ist Avalon die Aion Gilde).


So war es bisher:

PHP-Code:
<?php
    session_start
();
?>

<!--- Login verwalten --->
    <?php
    
if ($login) {

        
$error=1;
        
$Player_Name $_POST['acc'];
        
$Player_Passwort $_POST['pwd'];
        
$query "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
        
$result mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " mysql_error());
        
$zaehler mysql_num_rows($result);
        
$row mysql_fetch_row($result);
        
$Player_ID $row[0];
        if (
$Player_Passwort=="") {
            if (
$zaehler>0) {
            }
            else {
            }
        }
        else {
            if (
$zaehler == 1){
                while (
$error >= 1){
                      
$zeit time();
                    
$session "";
                    
srand ((float) microtime() * 10000000);
                    
$input = array ("1""2""3""4""5""6""7""8""9""a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z");
                    
$rand_keys array_rand ($input30);
                    for (
$i=0$i<30$i++) {
                        
$session=$session.$input[$rand_keys[$i]];
                    }
                    
$query "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
                    
$result mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " mysql_error());            
                    
$error mysql_num_rows($result);
                    if (
$error == 0) {
                        
$query "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
                        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
                        
$query "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
                        
$result mysql_query($query) or die("Session konnte nicht angelegt werden: " mysql_error());
                        
$_SESSION['id']=$session;
                        echo 
"Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
                    }
                }
            }
        }

    }

    if (
$logout) {

        
$query "DELETE FROM Sessions WHERE Sessions_ID='$session'";
        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
        
session_unset();
        
$_SESSION=array();
        
$site="news";
    }
    
?>

<!--- Sitzung abrufen --->
    <?php
    $session
=$_SESSION['id'];

Nun möchte ich beides zusammenführen, etwa so:

PHP-Code:
<?php
    session_start
();
?>

<!--- Login verwalten --->
    <?php
    
if ($login) {

        
$error=1;
        
$Player_Name $_POST['acc'];
        
$Player_Passwort $_POST['pwd'];
        
$query "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
        
$result mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " mysql_error());
        
$zaehler mysql_num_rows($result);
        
$row mysql_fetch_row($result);
        
$Player_ID $row[0];
        if (
$Player_Passwort=="") {
            if (
$zaehler>0) {
            }
            else {
            }
        }
        else {
            if (
$zaehler == 1){
                while (
$error >= 1){
                      
$zeit time();
                    
$session "";
                    
srand ((float) microtime() * 10000000);
                    
$input = array ("1""2""3""4""5""6""7""8""9""a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z");
                    
$rand_keys array_rand ($input30);
                    for (
$i=0$i<30$i++) {
                        
$session=$session.$input[$rand_keys[$i]];
                    }
                    
$query "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
                    
$result mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " mysql_error());            
                    
$error mysql_num_rows($result);
                    if (
$error == 0) {
                        
$query "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
                        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
                        
$query "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
                        
$result mysql_query($query) or die("Session konnte nicht angelegt werden: " mysql_error());
                        
$_SESSION['id']=$session;
                        
setcookie("UserSession""$session", (time()+60*60*24*30));
                        echo 
"Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
                    }
                }
            }
        }

    }

    if (
$logout) {

        
$query "DELETE FROM Sessions WHERE Sessions_ID='$session'";
        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
        
session_unset();
        
$_SESSION=array();
        
$_COOKIE['UserSession']="";
        
$site="news";
    }
    
?>

<!--- Zustzliche Parameter erzeugen --->
    <?php
    $session
=$_SESSION['id'];
    if (
$_COOKIE['UserSession']<>"") {
        
$session=$_COOKIE['UserSession'];
    }

Aber auch wenn ich die SESSION dann ganz herausnehme funktioniert es nicht...

PHP-Code:
<!--- Login verwalten --->
    <?php
    
if ($login) {

        
$error=1;
        
$Player_Name $_POST['acc'];
        
$Player_Passwort $_POST['pwd'];
        
$query "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
        
$result mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " mysql_error());
        
$zaehler mysql_num_rows($result);
        
$row mysql_fetch_row($result);
        
$Player_ID $row[0];
        if (
$Player_Passwort=="") {
            if (
$zaehler>0) {
            }
            else {
            }
        }
        else {
            if (
$zaehler == 1){
                while (
$error >= 1){
                      
$zeit time();
                    
$session "";
                    
srand ((float) microtime() * 10000000);
                    
$input = array ("1""2""3""4""5""6""7""8""9""a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z");
                    
$rand_keys array_rand ($input30);
                    for (
$i=0$i<30$i++) {
                        
$session=$session.$input[$rand_keys[$i]];
                    }
                    
$query "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
                    
$result mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " mysql_error());            
                    
$error mysql_num_rows($result);
                    if (
$error == 0) {
                        
$query "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
                        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
                        
$query "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
                        
$result mysql_query($query) or die("Session konnte nicht angelegt werden: " mysql_error());
                        
setcookie("UserSession""$session", (time()+60*60*24*30));
                        echo 
"Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
                    }
                }
            }
        }

    }

    if (
$logout) {

        
$query "DELETE FROM Sessions WHERE Sessions_ID='$session'";
        
$result mysql_query($query) or die("Bestehende Session konnte nicht gel&ouml;scht werden: " mysql_error());
        
$_COOKIE['UserSession']="";
        
$site="news";
    }
    
?>

<!--- Zustzliche Parameter erzeugen --->
    <?php
    
if ($_COOKIE['UserSession']<>"") {
        
$session=$_COOKIE['UserSession'];
    }
Ich hofe jemand von euch findet den Fehler, ich bin wohl inzwischen Betriebsblind

Vielen, Vielen Dank im Voraus!
BigDaddyXD ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.11.2008, 15:10  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das Session Modul von PHP kann doch bereits Cookies von sich aus verwenden.
siehe: PHP: Runtime Configuration - Manual
und session_set_cookie_params
David ist offline  
Alt 17.11.2008, 15:28  
Neuer Benutzer
 
Registriert seit: 17.11.2008
Beiträge: 20
BigDaddyXD befindet sich auf einem aufstrebenden Ast
Standard

mmhmm, ich bin nicht ganz sicher ob ich das richtig verstanden habe... ich bin noch recht neu im Thema "Sitzungen"...

Ich habe jetzt den Start des Headers ergänzt auf:

PHP-Code:
<?php 
    session_set_cookie_params 
(time()+60*60*24*30"/""avalon-gilde.com");
    
session_start(); 
?>
Es funktioniert trotzdem nicht. Wo liegt denn aus deiner Sicht der Fehler?! Müsste es nicht funktionieren wie ich es geschrieben habe?
BigDaddyXD ist offline  
Alt 17.11.2008, 15:33  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Im Prinzip ja.
Ich würde nur den ersten Parameter (die Zeitangabe) setzen.
Kontrolliere mal noch, ob überhaupt Cookies verwendet werden und ob sie gesetzt werden können.
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);
session_set_cookie_params (time()+60*60*24*30);
session_start();
echo 
'use_cookies: 'var_dump(ini_get('session.use_cookies')); echo "<br />";
Nicht vergessen, mindestens die Zeile mit echo/var_dump wieder zu löschen
David ist offline  
Alt 18.11.2008, 07:18  
Neuer Benutzer
 
Registriert seit: 17.11.2008
Beiträge: 20
BigDaddyXD befindet sich auf einem aufstrebenden Ast
Standard

Es funktioniert leider trotzdem nicht... Von den Errors könnte folgendes interessant sein:

PHP-Code:
use_cookiesstring(1"1" 
WarningCannot modify header information headers already sent by (output started at /homepages/45/d87692692/htdocs/Avalon/index.php:6in /homepages/45/d87692692/htdocs/Avalon/index.php on line 110
Notice
Undefined indexUserSession in /homepages/45/d87692692/htdocs/Avalon/index.php on line 111
Sitzung
3568adefgijnpstuvyACFGHKLMNSUY Cookie
NoticeUndefined indexUserSession in /homepages/45/d87692692/htdocs/Avalon/index.php on line 133 
Ich verzweifel noch, woran soll es denn jetzt noch liegen? Jede stinkige Ad-
Seite legt mir nen Cookie an, aber mit meiner Seite klappts nicht...
BigDaddyXD ist offline  
Alt 18.11.2008, 10:25  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Die Warining, also 2te Zeile in deinem geposteteten Code zeigt doch, dass in der index.php in Zeile 6 eine ausgabe gemacht wird... Wenn eine ausgabe erfolgt ist, bevor ein Cookie gesetzt werden soll, kommen solche meldungen...

Du musst also darauf achten, dass keine Ausgabe ausgegeben wird bevor der Coookie gesetzt worden ist.
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 18.11.2008, 13:39  
Neuer Benutzer
 
Registriert seit: 17.11.2008
Beiträge: 20
BigDaddyXD befindet sich auf einem aufstrebenden Ast
Standard

DAnke für eure Hilfe soweit.
Ich habe jetzt das Setzen des Cookies vor jede Ausgabe gepackt, aber es funktioniert trotzdem nicht... Gibt es noch irgendwelche Regln die man beachtne muss, wenn man einen Cookie setzen möchte? Ich dachte bisher man könnte überall auf der Seite einfach durch ein setcookie() die Geschichte erledigen, aber es will einfach nicht funktionieren...

Notfalls kann ich euch auch mal den kompletten Quelltext der Index-Seite schicken...
BigDaddyXD ist offline  
Alt 18.11.2008, 13:41  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

ja mach das mal (wenn der nicht alzulang ist, ansonsten nur die ersten, naja sagen wir mal 20 Zeilen)
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 18.11.2008, 13:42  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Nun du musst natürlich auch darauf achten das du den Cookie erst zurück bekommst wenn der nächste Request gemacht wurde.
cycap ist offline  
Alt 18.11.2008, 13:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich verstehe immer noch nicht, warum Du hier überhaupt setcookie() verwenden willst.
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Cookies JeeZ PHP Tipps 2006 2 08.10.2006 17:59
Cookies des Referers einbinden nickie12 PHP Tipps 2006 4 16.07.2006 15:46
Login-System ohne Cookies dethlef14 PHP Tipps 2006 7 27.03.2006 22:22
Cookies und Sessions funktionieren mit IIS nicht richtig PHP Tipps 2006 8 16.01.2006 16:01
Verfolgende Cookies lessiv PHP Tipps 2006 12 08.01.2006 17:20
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
Sitzungsvariablen, Abfrage-Zeichenketten, Cookies dethlef14 PHP Tipps 2005-2 2 16.08.2005 15:42
anzahl von cookies irgendwann bedenklich?lieber DB-Anfrage? Crypi PHP Tipps 2005-2 9 16.08.2005 12:55
sessions und cookies... PHP Tipps 2005-2 7 31.07.2005 21:17
cookies auslesen PHP Tipps 2005-2 1 09.06.2005 18:11
problem mit cookies... d4rki PHP Tipps 2005 1 20.04.2005 12:19
Cookies auslesen funktioniert nicht... PHP Tipps 2004-2 2 25.12.2004 14:00
cookies immer zulassen PHP Tipps 2004 11 16.07.2004 20:39
Prob beim Löschen von Cookies PHP Tipps 2004 4 07.06.2004 20:58
Probleme mit Session ohne Cookies PHP Tipps 2004 6 06.06.2004 15:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php cookie wird nicht gespeichert, php cookies werden nicht gespeichert, php cookie für eine sitzung, php cookies funktionieren nicht, cookier funktionieren nicht, php session cookie undefined index, php $_cookie undefined index, session cookies werden nicht gespeichert iis, undefined index: cookies, iis6 cookies php, wie session_set_cookie_params() verwenden, iis 6 php cookie setzen, cookies setzen und abrufen php, php cookie werden nicht gespeichert, cookies funktionieren nicht, php setzt _cookie nicht, cokkies funktionieren nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum