Fehlermeldung mit session_start() vermeiden

Fehlermeldung mit session_start() vermeiden

am 18.08.2006 01:01:41 von Daniel Schmidt

Hallo Newsgroup,

bei der Nutzung von session_start() kommt es immer dazu das Google
solche Seiten indiziert und teilw. auch leere Variablen speichert.
Diese Ergebnisse bringen dann so schöne Fehler wie:

Warning: session_start() [function.session-start]: The session id
contains invalid characters, valid characters are only a-z, A-Z and 0-9
in .../data/header.inc.php on line 12

Warning: session_start() [function.session-start]: Cannot send session
cache limiter - headers already sent (output started at
..../data/header.inc.php:12) in .../data/header.inc.php on line 12

wie kann ich diese Fehler vermeiden?


Grüße Daniel

Re: Fehlermeldung mit session_start() vermeiden

am 18.08.2006 01:15:07 von Frank Schenk

Daniel Schmidt schrieb:
> Hallo Newsgroup,
>
> bei der Nutzung von session_start() kommt es immer dazu das Google
> solche Seiten indiziert und teilw. auch leere Variablen speichert.
> Diese Ergebnisse bringen dann so schöne Fehler wie:
>
> Warning: session_start() [function.session-start]: The session id
> contains invalid characters, valid characters are only a-z, A-Z and 0-9
> in .../data/header.inc.php on line 12
>
> wie kann ich diese Fehler vermeiden?

Indem du prüfst, ob die Session-Variable etwas enthält?!

if(array_key_exists('PHPSESSID',$_GET) &&
strlen(trim($_GET['PHPSESSID'])) > 0){
// session variable gesetzt
} else {
// neue session starten
}


Frank

Re: Fehlermeldung mit session_start() vermeiden

am 18.08.2006 23:03:25 von Daniel Schmidt

> Indem du prüfst, ob die Session-Variable etwas enthält?!

nun habe ich aber viele session_register(); im Projekt habe die
nun nat. einen Fehler erzeugen. Die session_start(); ist dabei im
Header und müßte nur einmal abgeändert werden. Wäre folgende
Konstellation denkbar?

url: http://www.beipiel.de/test.php?PHPSESSID=

if(preg_match("/PHPSESSID=/", $_GET) && $PHPSESSID=="") {
header("Location: http://www.beipiel.de/test.php");
}

Welche Stolperfallen sind hier evtl. zu beachten?


Grüße Daniel

Re: Fehlermeldung mit session_start() vermeiden

am 19.08.2006 00:12:11 von Frank Schenk

Daniel Schmidt schrieb:
>> Indem du prüfst, ob die Session-Variable etwas enthält?!
>
> url: http://www.beipiel.de/test.php?PHPSESSID=
>
> if(preg_match("/PHPSESSID=/", $_GET) && $PHPSESSID=="") {
> header("Location: http://www.beipiel.de/test.php");
> }
>
> Welche Stolperfallen sind hier evtl. zu beachten?

> if(preg_match("/PHPSESSID=/", $_GET) && $PHPSESSID=="") {

Das ist Müll, $_GET ist ein Array, siehe mein Beispiel.

session_register() ist hochgradig veraltet, es gibt $_SESSION

Ansonsten schau dir halt mal das Handbuch an. Und header() mag google
schon garnicht.


Frank

Re: Fehlermeldung mit session_start() vermeiden

am 19.08.2006 02:53:03 von Daniel Schmidt

> if(array_key_exists('PHPSESSID',$_GET) &&
> strlen(trim($_GET['PHPSESSID'])) > 0){
> // session variable gesetzt

so habe ich aber das Problem das ich die Session nicht gleich für die
Navigation nutzen kann. Gibt es noch eine andere Lösung?


Grüße Daniel

Re: Fehlermeldung mit session_start() vermeiden

am 19.08.2006 12:22:49 von Frank Schenk

Daniel Schmidt schrieb:
>> if(array_key_exists('PHPSESSID',$_GET) &&
>> strlen(trim($_GET['PHPSESSID'])) > 0){
>> // session variable gesetzt
>
> so habe ich aber das Problem das ich die Session nicht gleich für die
> Navigation nutzen kann. Gibt es noch eine andere Lösung?
>
>
> Grüße Daniel

Niemand weiß, was du tust und wo das Problem ist. Geht auch nicht ohne
deinen Code zu kennen.

head.php
if(array_key_exists('PHPSESSID',$_GET) &&
strlen(trim($_GET['PHPSESSID'])) > 0){
// session variable gesetzt
session_start($_GET['PHPSESSID']);
} else {
// neue session starten
session_start();
}
....

PHPSESSID musst du an deinen Sessionnamen anpassen.


Frank

Re: Fehlermeldung mit session_start() vermeiden

am 19.08.2006 12:51:09 von Daniel Schmidt

Hallo Frank,

die url in Google sieht so aus:

http://www.beipiel.de/test.php?PHPSESSID=

daher rührt der Fehler.


Grüße Daniel


Frank Schenk schrieb:
>
> Daniel Schmidt schrieb:
> >> if(array_key_exists('PHPSESSID',$_GET) &&
> >> strlen(trim($_GET['PHPSESSID'])) > 0){
> >> // session variable gesetzt
> >
> > so habe ich aber das Problem das ich die Session nicht gleich für die
> > Navigation nutzen kann. Gibt es noch eine andere Lösung?
> >
> >
> > Grüße Daniel
>
> Niemand weiß, was du tust und wo das Problem ist. Geht auch nicht ohne
> deinen Code zu kennen.
>
> head.php
> > if(array_key_exists('PHPSESSID',$_GET) &&
> strlen(trim($_GET['PHPSESSID'])) > 0){
> // session variable gesetzt
> session_start($_GET['PHPSESSID']);
> } else {
> // neue session starten
> session_start();
> }
> ...
>
> PHPSESSID musst du an deinen Sessionnamen anpassen.
>
> Frank

Re: Fehlermeldung mit session_start() vermeiden

am 19.08.2006 17:27:26 von Sven Drieling

Daniel Schmidt wrote:

Hallo,


> http://www.beipiel.de/test.php?PHPSESSID=3D
>=20
> daher rührt der Fehler.

Ein Workaround besteht darin die leere PHPSESSID-Variable zu
löschen, bevor die Session gestartet wird.
=20
if(isset($_GET['PHPSESSID']) and '' == trim($_GET['PHPSESSID']))=

{
unset($_GET['PHPSESSID'], $_REQUEST['PHPSESSID'], $PHPSESSID);=20=

}
=20
session_start();
=20
=20
Statt dem '' == trim()-Vergleich eventuell besser ein preg_match()=
,
der auf erlaubte, nicht erlaubte Zeichen in der SessionID checkt.
=20
=20
Oder erst gar keine leere PHPSESSID rausgeben. Die Konstante
SID ist nur gesetzt wenn eine Sesssion läuft und die ID nicht
per Cookie übergeben wird.
=20
if(isset(SID))
{
echo "index.html?", SID;
}
else
{
echo "index.html";
}


tschuess
[|8:)