Hat Dein Hoster eventuell PHP aktualisiert auf dem Server und die register_globals abgeschaltet?
Mach mal eine Datei mit diesem Inhalt:
<?php
phpinfo()
?>
Und führe sie aus. Welche PHP-Version steht da, und was steht beim Feld register_globals?
...und keine(r) weiß, was passiert ist... der fall:
ich habe unter http://www.warumgehtndasnich.de/start mein 'gesellenstück' am laufen: myStartseite. da muß mensch sich anmelden, einloggen und bekommt dann ein cookie, woraufhin myStartseite optisch anpassbar ist und bookmarks und notizen dort abgelegt werden können.
ohne cookie zeigt sich eine weiße, allgemein gehaltene seite, die versucht, myStartseite zu erklären.
ich habe das ding echt oft benutzt und es war mein ganzer stolz und jetzt erkennt sie urplötzlich mein cookie nicht, browser- und plattformunabhängig, auch ein erneuter LogIn hilft nicht, fehler wurde auch schon von anderen Nutzern bemerkt.
ich hab definitiv nix dran gemacht - hatte gar nicht die zeit zu - und die leute, wo server hosten, auch nicht, schon nachgefragt.
was kann das sein? ein krimi?
blueGirl
Hat Dein Hoster eventuell PHP aktualisiert auf dem Server und die register_globals abgeschaltet?
Mach mal eine Datei mit diesem Inhalt:
<?php
phpinfo()
?>
Und führe sie aus. Welche PHP-Version steht da, und was steht beim Feld register_globals?
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Wenn man über einen proxy-server surft, funktionieren cookies manchmal nicht richtig.
nix proxy, ich hasse die dinger quasi persönlich.
@Adagio:
register_globals Off Off
und was mache ich nun? da ansagen, dass ich das gerne wieder htte (warum geht das ae auf meiner tastatur jetzt nimmer???) oder kann ich das direkt im script umgehen?
steht in der phpinfo auch, wer das wann warum gendert hat?
danke aber fr die schnelle hilfe!
blueGirl
blueGirl
Also, Du hast zwei Möglichkeiten:
- Du sagst Deinem Hoster, sie sollen in der php.ini die register_globals wieder einschalten, da Du (und bestimmt viele andere Kunden von denen) Probleme mit den bestehenden Skripten haben
- oder, wenn sie das nicht wollen, musst Du Dein Skript wohl oder übel ein wenig umschreiben. Alle Variablen, die vorher automatisch ansprechbar waren (egal, ob sie via Formular oder URL kamen), müssen jetzt extra angesprochen werden:
Formulardaten: $_POST['meinevar']
Daten über die URL: $_GET['meinevar']
Daten über Cookies: $_COOKIE['meinevar']
Daten über Sessions: $_SESSION['meinevar']
Oder der "alles-Fänger":
$_REQUEST['meinevar']
Es gibt noch mehr dieser sogenannten "Superglobals". Schau Dich einfach ein wenig bei www.php.net um.
Wenn Du Hilfe beim umschreiben brauchst, meld Dich einfach bei uns![]()
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
also, mein hoster meint, die hätten wirklich und überhaupt nix daran geändert und die register_globals seien schon immer off gewesen - aus sicherheitsgründen. da ich von diesem manne php gelernt habe, habe ich also alles schon so programmiert, daß das so funktioniert (mit diesen php- und servereinstellungen habe ich mich nie groß befaßt).
ich weiß gar nicht, daß variablen, wenn ich sie nicht deklariere, nicht ansprechbar sind, ich habe sie schon immer in den ersten zeilen deklariert:
es ist mir ein rätsel. ich habe meinen hoster per mail 'auf der anderen leitung' und bau jetzt mit euch und ihm ganz langsam das script nach...PHP-Code:/* ************** Variablen definieren ******* */
$cookie = $_COOKIE['sessionid'];
$i = 0;
$suchstring = $_POST['suchGoogle'];
include("***");
$katnow=$_POST['kategorie'];
$com=$_GET['com'];
$booksortierung = '0';
$firstkat='0';
was macht dieses register_globals eigentlich?
schönes WE! blueGirl
blueGirl
als erstes würde ich mal anfangen, zu schauen, ob überhaupt welche Sachen in den Superglobals stehen:
print_r($_POST),
print_r($_GET)
print_r($_COOKIE)
...
einfach mal nach oben irgendwo am Anfang der Scriptels hinpacken und schauen was rauskommt.
oh, mein gott, ich bin so bescheuert!!!! ich bin selbst dran schuld! ich habe mein cookie gesetzt:
und der 14. november ist nu also schon vorbei...PHP-Code:$cookie=setcookie("sessionid=$sessionid; path=/; expires=Monday, 14-Nov-03 23:00:00 GMT");
ich will, da (ich hab in dem formularfeld keine umlaute mehr, was ist das???) mein cookie ewig lebt. welche angabe knnte ich dazu machen?
blueGirl
Sollte gehen. Laut Ref. kann man durch "" Parameter weg lassen.PHP-Code:$cookie=setcookie("sessionid=$sessionid; path=/; expires=''");
Ob aber nun der Syntax richtig ist musst Du mal testen, da ich nicht mit Cookie arbeite und mich so auch nicht sonderlich mit ihnen auskenne.
cu webcreate
ne, geht nicht. das cookie stirbt dann nach dieser sitzung. ich werde es jetzt wohl einfach auf eine bestimmte zeit setzen (sekunden) und bei jedem aufruf erneut auf diese zeit setzen. die dauer erneuert sich dann mit jedem besuch und wer das ding n paar monate nicht benutzt, muß sich erneut einloggen. ist vielleicht auch sicherer....
danke dennoch.
blueGirl
blueGirl
Hmm, kA was das mit dem String auf sich hat, aber hier mein Vorschlag:
Parameter expire in der Funktion setcookie() laut Dokumentation:
So nun der Funktionsaufbau selbst:Ist der Parameter nicht gesetzt, verfällt das Cookie am Ende der Session (wenn der Browser geschlossen wird).
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Das heißt:
Und was setcookie("sessionid=$sessionid; path=/; expires=''"); heißen soll weiß ich wie gesagt nicht, vielleicht kann mir das mal jemand erklären.PHP-Code:$cookie = setcookie("Name", "Inhalt", time()/* +Sekunden bis zum Verfall des Cookies */);
sessionid: wird die variable in den cookie reingeschrieben, das ist die id, die ich dann mit der db vergleiche und dem benutzer 'seine' inhalte liefere. path schau ich grad mal nach, sollte irgendweswegen gesetzt werden...
ah ja:
path | Der Pfad zu dem Server, auf welchem das Cookie verfügbar sein wird. | Ist er auf '/' gesetzt, wird das Cookie innerhalb der gesamten Domain verfügbar. Ist er auf '/foo/' gesetzt, wird das Cookie nur innerhalb des Verzeichnisses /foo/ der domain, sowie allen Unterverzeichnissen wie z.B. /foo/bar/ verfügbar. Der Standardwert ist das Verzeichnis, in dem das Cookie gesetzt wurde.
und expires ist genau diese zeit angabe, an der ich mich gerade versuche...
blueGirl
hi, leutz, ich hab es jetzt endlich beheben können! die zeile:
funktioniert. ich bin erleichtert!PHP-Code:$cookie=setcookie(sessionid, $sessionid, time()+60*60*24*365);
setcookie scheint eine sehr empfindliche angelegenheit zu sein. um nicht zu sagen - zickig...
blueGirl
blueGirl
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)