php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.04.2008, 17:50  
Benutzer
 
Registriert seit: 15.02.2008
Beiträge: 40
Nickname befindet sich auf einem aufstrebenden Ast
Standard PHP - Cookie problem

Also, ich arbeite an einem Login System das Cookies erfordert.

Aber wenn ich mich einloggen will steht da immer "Bitte schalte Cookies ein!" (Also, der Text der ausgegeben werden soll wenn Cookies deak. sind.) Aber ich habe Cookies aktiviert .

Hier mal die Codes:

login.php
PHP-Code:
<?php
$status_no 
"<p>Nicht eingeloggt!</p>";
$status_yes "<p>Status: eingeloggt - <a href='{$_SERVER['PHP_SELF']}?logoff=1'>Ausloggen?</a></p>";
include 
"zugriff.inc.php";
include 
"loginmaker.inc.php";
include 
"logoffmaker.inc.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Einloggseite</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<div>Startseite - <a href="seite1.php">Seite 1</a> - <a href="seite2.php">Seite 2</a> - <a href="seite3.php">Seite 3</a></div>
<h1>Willkommen auf der Startseite</h1>
<?php
if (isset($_SESSION['login']) && $_SESSION['login'] === true) {
echo 
$status_yes;
} else {
echo 
$status_no;
}
echo <<<FORMULAR
<form action="{$_SERVER['PHP_SELF']}" method="post">
Nickname:&nbsp;<input type="text" name="user"><br />
Passwort:&nbsp;<input type="password" name="pw"><br /><br />
<input type="submit" value=" Absenden ">
</form>
FORMULAR;
?>
</body>
</html>
loginmaker.inc.php:
PHP-Code:
<?php
if (!empty($_POST['user']) && !empty($_POST['pw'])) {
if (
SID != "") { // SID ungleich Leerstring
$status_no "<p>Bitte schalte Cookies ein!</p>";
} else {
$user trim($_POST['user']);
$pw trim($_POST['pw']);
$pw md5($pw);
$loginsql "SELECT user, pw FROM userlogin WHERE user='$user' AND pw='$pw'";
$result mysql_query($loginsql);
if (
mysql_num_rows($result) == 1) {
$_SESSION['login'] = true;
$status_yes "<p>Du bist eingeloggt als <strong>$user</strong>!</p>";
} else {
$_SESSION false;
$status_no "<p>Einloggdaten nicht korrekt!</p>";
}
}
}
?>
logoffmaker.php:
PHP-Code:
<?php
if (isset($_GET['logoff']) && $_GET['logoff'] == 1) {
session_unset();
if (isset(
$_COOKIE['PHPSESSID'])) {
setcookie("PHPSESSID"""time()-86400);
}
session_destroy();
}
?>
Nickname ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.04.2008, 18:08  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Hallo,

willst du nicht eher prüfen, ob SID == "" ist statt != "", um herauszufinden, ob der User KEINE Cookies aktiviert hat?

Im Übrigen kannst du dir das Löschen des Session-Cookies sparen. Viel wichtiger ist, dass du das Session-Array leerst und die Session löschst:
PHP-Code:
session_destroy();
$_SESSION = array(); 
Ach, noch etwas: damit du es nicht falsch verstehst: es ist nicht möglich, in einem Rutsch zu erkennen, ob Cookies gesetzt werden können. Das Cookie wird immer an den Client gesendet und erst beim nächsten Skript-Aufruf kann geprüft werden, ob es auch gespeichert, also angenommen wurde. Deshalb wird SID beim ersten Aufruf in jedem Fall (auch wenn Cookies aktiviert sind) PHPSESSID=... zurückgeben.

Geändert von Manko10 (13.04.2008 um 18:15 Uhr).
Manko10 ist offline  
Alt 13.04.2008, 18:23  
Neuer Benutzer
 
Registriert seit: 19.11.2007
Beiträge: 4
Lyrone befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich weiß nicht in wie weit du das Script auf wichtige Stellen gekürzt hast, aber es fehlt überall session_start(). Sollte das bei dir drinne sein in der Original File, ignoriere diese 2 Sätze.

Setze doch in der login.php mit setcookie einen Testcookie, wenn dieser in der loginmaker.inc.php abrufbar ist, ist mit hoher wahrscheinlichkeit Cookies erlaubt, oder der User hat ihn einmalig akzeptiert.
Lyrone ist offline  
Alt 13.04.2008, 19:03  
Benutzer
 
Registriert seit: 15.02.2008
Beiträge: 40
Nickname befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Hallo,

willst du nicht eher prüfen, ob SID == "" ist statt != "", um herauszufinden, ob der User KEINE Cookies aktiviert hat?

Im Übrigen kannst du dir das Löschen des Session-Cookies sparen. Viel wichtiger ist, dass du das Session-Array leerst und die Session löschst:
PHP-Code:
session_destroy();
$_SESSION = array(); 
Ach, noch etwas: damit du es nicht falsch verstehst: es ist nicht möglich, in einem Rutsch zu erkennen, ob Cookies gesetzt werden können. Das Cookie wird immer an den Client gesendet und erst beim nächsten Skript-Aufruf kann geprüft werden, ob es auch gespeichert, also angenommen wurde. Deshalb wird SID beim ersten Aufruf in jedem Fall (auch wenn Cookies aktiviert sind) PHPSESSID=... zurückgeben.
Zitat:
Zitat von Lyrone Beitrag anzeigen
Hi,

ich weiß nicht in wie weit du das Script auf wichtige Stellen gekürzt hast, aber es fehlt überall session_start(). Sollte das bei dir drinne sein in der Original File, ignoriere diese 2 Sätze.

Setze doch in der login.php mit setcookie einen Testcookie, wenn dieser in der loginmaker.inc.php abrufbar ist, ist mit hoher wahrscheinlichkeit Cookies erlaubt, oder der User hat ihn einmalig akzeptiert.
Da liegt ihr beide falsch . Ich benutze die Codes aus dem Buch "PHP & MySQL für Kids - Praxisbuch" (von JCH).

SID != "" soll also prüfen ob SID einen Leerstring erhält .


Die session_start(); liegt in der "sessionheader.inc.php".

Im übrigen mein Problem hat sich erledigt.

- Mod can closen -
Nickname ist offline  
Alt 13.04.2008, 19:27  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
Zitat von Nickname Beitrag anzeigen
SID != "" soll also prüfen ob SID einen Leerstring erhält .
Ja, gut, okay. Falsch herum gedacht.
Aber ich denke, dass es immer guter Brauch ist, seine Lösungen zu posten.
Manko10 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 Forensystem Dominik PHP Tipps 2008 17 30.04.2008 14:28
Cookie löschen funktioniert nicht GSJLink PHP Tipps 2007 2 24.01.2007 14:55
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Cookie Problem tomtaz PHP Tipps 2006 9 26.06.2006 12:36
Cookie setzen bei Subdomain mit Unterzeichen! horvath-media PHP Tipps 2006 5 27.05.2006 16:41
problem bei sessions in komb. m. cookies. header umgehen? Promaetheus PHP Tipps 2006 10 02.05.2006 15:52
Cookie Problem Freeaak PHP Tipps 2005-2 8 04.08.2005 13:26
Cookie löschen tomtaz PHP Tipps 2005-2 3 06.06.2005 20:50
cookie problem PHP Tipps 2005 5 08.03.2005 21:22
cookie wird nicht gesetzt - ( vorher KEINE ausgabe ) PHP Tipps 2005 4 14.02.2005 13:34
Problem mit Cookie Kenshin PHP Tipps 2005 3 03.02.2005 18:55
Cookie bis nächsten Montag gültig machen Magic PHP Tipps 2004-2 2 09.12.2004 18:21
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
Cookie / localhost / Problem gelöst PHP-Fortgeschrittene 11 02.11.2004 22:41
[Erledigt] cookie bei erster aktualisierung auslesen... PHP Tipps 2004 3 09.06.2004 09:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php cookie problem, php setcookie funktioniert nicht, php cookie probleme, php cookie fehler, php $_cookie nicht erlaubt, php probleme mit cockies, cookie problem php, php $_cookie ist leer, php cookie funktioniert nicht, phpsessionid cookie, php cookie not working, php setcookie doesnt work, cookies deaktiviert phpsessid login, php cookie nicht abrufbar

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:28 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