Globale Variablen bei "register_globals=off"

bossi

Erfahrenes Mitglied
Hi zusammen,
ich brauch mal ein Paar kleine Infos :)
Ich habe bisher immer mit "register_globals=on" gearbeitet und nun moechte ich mein Neues Projekt mit "register_globals=off" starten.
Und hier jetzt mal ein Beispiel wie ich vorher mein Code zusammengesetzt habe :
index.php
PHP:
<?php
ini_set('display_errors', 1); 
ini_set('error_reporting', E_ALL);

@session_save_path('temp/');
session_start();

switch ($page)
{
	case "kontakt":
		require('kontakt.php');
		break;
	default:
		require('home.php');
		break;
}

echo <<<html
<html><head><title>titel</title></head>
<BODY>
	$inhalt
</body>
</html>
html;
?>
kontakt.php
PHP:
<?
$inhalt = <<<html
Kontakt
<form name="kontakt" method="POST" action="index.php?page=kontakt" style="display:inline">
<input type="text" name="email" value="$email" style='width:150'>
<input type="submit" value="Senden" style="width: 100">
</form>
html;
?>
Habe ich Jetzt ein Fehler in Kontakt (kein Betreff oder so), ist bei Zurueck das Input eMail wieder gefühlt.
Wie deklariere ich jetzt eine Variable das sie auch als $email immer erreichbar ist ?
PHP:
$email = $_POST['email'];
So ist sie nur beim aktuellen Aufruf gefühlt, aber nicht wen ich noch einmal auf Kontakt klick :(
Gibt es eine Möglichkeit eine Variable via POST Global zu Füllen ?
Sonst muss ich Sie ja immer Extra erstellen und aus ein Arrayer holen :(
Also Ihr Profis, wie sieht die Sauberste Lösung aus :)

MfG
Bossi
 
Auch die superglobalen Variablen sind auch nur für den aktuellen Aufruf gültig.

=> Klick auf Kontakt
=> Verarbeitung der Daten
=> Zurückbutton beim Browser: Felder sind noch gefüllt (hat sich die Eingabe gemerkt)
=> Neuer Aufruf der Seite Kontakt: Felder wieder leer, da es im Prinzip eine neue Seite ist. Die Werte von ersten Aufruf werden nach den verarbeiten wieder gelöscht.

Oder habe ich dich da falsch verstanden?
 
Moin,
jo hast falsch verstanden, ist aber auch mein Fehler gewesen :-(
PHP:
<?
if(!$femail OR $email!=$femail) $email = $_POST['email'];
$inhalt = <<<html 
Kontakt 
<form name="kontakt" method="POST" action="index.php?page=kontakt" style="display:inline"> 
<input type="text" name="email" value="$femail" style='width:150'> 
<input type="submit" value="Senden" style="width: 100"> 
</form> 
html; 
?>
 
Also das kann ich ja kaum gleuiben das hier keine eine Antwort drauf hat ;-]
 
Wenn du im Browser auf zurück klickst, dann liegt es am Browser, ob er das Formular mit den schon gemachten Eingaben wieder füllt, wenn du aber einen "Zurück"-Link anbietest, dann könntest du ein Formular mit "hidden"-Feldern füllen, was bei klick auf den Link abgeschickt wird.
 
Die Variablen sollen ja von ein Input-Feld gefühlt werden ;)
PHP:
$email = $_POST['email'];
Nun ist nach ein Button-Klick auf der Nächsten Seiten die Variable "$email" mit xxx@xxx.xx gefühlt.
Geht man nun aber via Browser oder auch Link zurück, ist die Variable "$email" wieder leer ;-]
Also muss ich wohl die Variable erstmal in ein Array anlegen, das wird ja nicht wieder gelöscht.
Was aber auch wieder bedeutet das ich Sie immer wieder aus diesen Array in "$email" zuweisen muss.
Kann halt nicht ein Array im Content eintragen :
PHP:
$member = array(	"email"=>$_POST['email']);
echo = <<<html 
$member['email']
html;
Das geht halt nicht und mit <? echo $member['email']; ?> kann man nicht in Kontent arbeiten :(
 
Tipp: Sessions...

PHP:
session_start(); # Am Anfang der Datei

// Code...
$_SESSION['email'] = $_POST['email'];

Die $_SESSION['email'] ist nun solange verfügbar, wie der User den Browser geöffnet hat. Achte darauf, session_start() in jeder Datei vor alle Ausgaben zu setzen. Also auch vor HTML Code und so, sonst kommt eine Fehlermeldung (Cannot send session cookie - headers already sent by...).
 
Moin moin,
jo das mit Session ist mir schon bekannt, aber mit "register_globals=off" habe ich nicht wie bei "register_globals=on" meinen Zugriff so :
PHP:
session_start();
$_SESSION['email'] = "xxx@xxx.xx";
echo $email;
# Ausgabe = nichts!
echo $_SESSION['email'];
# Ausgabe = xxx@xxx.xx
Die erste Echo-Variante bei "register_globals=on" und die 2te muss ich wieder nutzen bei "register_globals=off" :(
Kann das sein oder habe ich ein Fehler in mein XAMPP :confused:
 
Ja, das stimmt so.
register_globals macht nichts anderes, als
$_SESSION['email']
in
$email
zu "registrieren". Darum kannst du, wenn diese Option auf off steht, auch nicht auf $email zugreifen, da es diese Variable nicht gibt.

Es ist sowieso ratsam, immer mit register_globals = off zu programmieren. Da diese Option bei ziemlich vielen Hostern deaktiviert ist.
Es kann auch vorkommen, das der Hoster sagt, wir stellen es auf off. Und dann darfst du alles Scripte umschreiben.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück