Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Variablen und ihre Lebensdauer“

the_real_didi

Aktives Mitglied

Hallo Leute,

Nachdem ich mein Formular abgeschickt habe führe ich eine Validitätsprüfung der Eingaben durch. Von dieser erhalte ich ein array für jedes eingabefeld zurück, die den Fehler enthalten.
Sind fehlerhafte Eingaben vorhanden, dann starte ich das script neu, indem ich...

[php:1:e52056d9fb]$_SESSION['Inputerror'] = 1;
$_SERVER['PHP_SELF'];
exit();[/php:1:e52056d9fb]

...aufrufe. Dann sollen die Eingabefelder über dem Formular angezeigt werden. Leider sind die arrays dann nicht mehr gefüllt.
Ich könnte zwar die Daten des arrays in $_SESSION[] speichern, ich denke aber, dass das nicht die beste Lösung ist.

Ich hoffe, einer von euch kann mir verraten wie man sowas elegant löst.
 

erti

Blabubb

Also prinzipiell kannst du Variablen nur durch GET, POST, COOKIE oder einer Session "speichern", sodass sie später wieder aufrufar sind...

Post fällt schonmal aus, da du da ja ein Formular brauchst und das würd nicht ganz passen...
Du könntest das ganze an die URL anhängen und das per GET wieder rausholen,is aber glaub ich keine sehr schöne Lösung...
Du könntest natürlich auch ein Cookie erstellen, und die DAten dann aus dem Cookie holen, aber das is wohl auch net grad die schönste Lösung!

Also ich würde da schon eine Session-Variable nutzen, das is glaub ich die beste Methode!

WArum willst du keine Session-Variable?

gruß
erti
 

lomion

Aktives Mitglied

ich nehme mal an ich ahbe das richtig verstanden..
du willst ein formular prüfen und wenn fehler auftauchen, das formular nochmal mit allen angaben aufrufen und darauf hinweisen das xyz falsch ist, richtig?

die beste methode dafür ist ajax...denn die überprüfung wird dann vom javascript übernommen, und somit wird der server entlastet... allerdings gibt es einen grpßen nachteil: java/javascript.. leider kann ich das ding nur lesen aber tippen kein stück.. lesen gehta uch nur aus dem zusammenhgang.. also kurzum bin ne javaniete^^
aber vielleicht kann dir wer anderes dabei helfen..^^
 

the_real_didi

Aktives Mitglied

Erstmal danke für die superschnelle Antwort.

War mir halt nicht ganz sicher, ob die $_SESSION[] für sowas überhaupt vorgesehen ist. Wollte die nicht mit Variablen vollstopfen und dann mit der performance probleme bekommen. kann ich in das $_SESSION-array direkt ein array speichern?
Also
[php:1:43ed5c3b5e]$_SESSION['test']=$test
// $test ist ein array[/php:1:43ed5c3b5e]

und wenn ja, wie greift man dann drauf zu?
[php:1:43ed5c3b5e]$_SESSION['test[0]'][/php:1:43ed5c3b5e]???

sieht irgendwie merkwürdig aus.
 

blackout

Schaf im Wolfspelz

lomion schrieb:
die beste methode dafür ist ajax
Ignorier das. Clientseitige Formularauswertung und Javascript (speziell für diese Anwendung) sind beides schlechte Webpraktiken. Und den Server entlastet das auch nicht, es sei denn, du willst das alles eine Million mal pro Sekunde ausführen.

Außerdem: ja, du kannst . die rufst du dann aber nicht $array['$arr2[x]'] sondern $array[arr2][x] auf.
 

lomion

Aktives Mitglied

@blackout.. warum hat man denn ajax überhaupt entwickelt? doch dafür das man serverseitige und clientseitige sachen gemeinsam im nutzen kann und zwar "hand in hand" und nicht beides für sich...

wenn du deine abneigung gegen java damit kuntun wolltest ...ok bin ich sogar einer meinung mit dir..
 

the_real_didi

Aktives Mitglied

danke blackout.

Also werden alle Daten, die über die Lebensdauer eines Scriptes hinaus benötigt werden am besten in der Session gespeichert.
Ist das richtig?
 

the_real_didi

Aktives Mitglied

Also das mit den arrays funktioniert und ich kann die Eingabefelder auf ihre Eingaben kontrollieren.

Jetzt hab ich nur noch n Problem mit dem Aktualisieren der Seite. Beim ersten mal Absenden der Seite wird die Fehlermeldung noch nicht angezeigt. erst beim zweiten Klick auf den Button wird die vorherige Fehlermeldung angezeigt.
Ich hoffe, mir kann jemand von euch sagen, woran das liegt. hab das Problem an mehreren Stellen. Irgendwo hab ich bestimmt n Denkfehler drin.

Hier mal der Quelltext:
[php:1:49334f6470]<?php
include_once 'funktionen.php';

function error_anzeigen()
{
if ($_SESSION['$kundennr'][0] == false)
{
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">Kundennr:</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">'.$_SESSION['$kundennr'][1].'</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
}
if ($_SESSION['$vorname'][0] == false)
{
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">Vorname:</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">'.$_SESSION['$vorname'][1].'</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
}
if ($_SESSION['$name'][0] == false)
{
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">Kundennr:</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">'.$_SESSION['$name'][1].'</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
}
if ($_SESSION['$email'][0] == false)
{
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">Vorname:</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">'.$_SESSION['$email'][1].'</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
}
if ($_SESSION['$email2'][0] == false)
{
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">Vorname:</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td background="box2_l.jpg" width="9"></td>';
echo '<td background="box2.jpg" cellpadding="20"><p id="boxerror">'.$_SESSION['$email2'][1].'</p></td>';
echo '<td background="box2_r.jpg" width="17"></td>';
echo '</tr>';
}
}

function design_Error()
{
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10px" height="51px"></td>
<td background="box2_ol.jpg" width="9"></td>
<td background="box2_o.jpg"><p id="boxtitel">Daten wurden nicht korrekt eigegeben</p></td>
<td background="box2_or.jpg" width="17"></td>
</tr>
<tr>
<td height="7"></td>
<td background="box2_l.jpg" width="9"></td>
<td background="box2.jpg" cellpadding="20"><p id="boxcontent"></p></td>
<td background="box2_r.jpg" width="17"></td>
</tr>
<?php
error_anzeigen();
?>
<tr>
<td height="7"></td>
<td background="box2_l.jpg" width="9"></td>
<td background="box2.jpg" cellpadding="20"><p id="boxcontent"></p></td>
<td background="box2_r.jpg" width="17"></td>
</tr>
<tr>
<td></td>
<td background="box2_ul.jpg" width="9" height="8"></td>
<td background="box2_u.jpg"></td>
<td background="box2_ur.jpg" width="17"></td>
</tr>
<?php
$_SESSION['Inputerror'] = 0;
}

function design_Form()
{
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10px" height="51px"></td>
<td background="box2_ol.jpg" width="9"></td>
<td background="box2_o.jpg"><p id="boxtitel">Bitte f&llen Sie alle Felder aus</p></td>
<td background="box2_or.jpg" width="17"></td>
</tr>
<tr>
<td height="7"></td>
<td background="box2_l.jpg" width="9"></td>
<td background="box2.jpg" cellpadding="20"><p id="boxcontent"></p></td>
<td background="box2_r.jpg" width="17"></td>
</tr>
<tr>
<td></td>
<td background="box2_l.jpg" width="9"></td>
<td background="box2.jpg" cellpadding="20"><p id="boxcontent"><?php Form_Registrierung();?></p></td>
<td background="box2_r.jpg" width="17"></td>
</tr>
<tr>
<td height="7"></td>
<td background="box2_l.jpg" width="9"></td>
<td background="box2.jpg" cellpadding="20"><p id="boxcontent"></p></td>
<td background="box2_r.jpg" width="17"></td>
</tr>
<tr>
<td></td>
<td background="box2_ul.jpg" width="9" height="8"></td>
<td background="box2_u.jpg"></td>
<td background="box2_ur.jpg" width="17"></td>
</tr>
<?php
}

function Form_Registrierung()
{
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?page=reg">
<table border="0">
<tr>
<td width="10px">&</td>
<td align="right">Kundennummer:</td>
<td><input name="kundennummer" type="text" value="<?php if (isset($_REQUEST['kundennummer'])) echo htmlspecialchars($_REQUEST['kundennummer']); ?>" /></td>
<td>&</td>
</tr>
<tr>
<td width="10px">&</td>
<td align="right">Vorname:</td>
<td><input name="vorname" type="text" value="<?php if (isset($_REQUEST['vorname'])) echo htmlspecialchars($_REQUEST['vorname']); ?>" /></td>
<td>&</td>
</tr>
<tr>
<td width="10px">&</td>
<td align="right">Name:</td>
<td><input name="name" type="text" value="<?php if (isset($_REQUEST['name'])) echo htmlspecialchars($_REQUEST['name']); ?>" /></td>
<td>&</td>
</tr>
<tr>
<td>&</td>
<td align="right">eMail:</td>
<td><input name="email" type="text" value="<?php if (isset($_REQUEST['email'])) echo htmlspecialchars($_REQUEST['email']); ?>" /></td>
<td>&</td>
</tr>
<tr>
<td>&</td>
<td align="right">eMail wiederholen:</td>
<td><input name="email2" type="text" value="<?php if (isset($_REQUEST['email2'])) echo htmlspecialchars($_REQUEST['email2']); ?>" /></td>
<td>&</td>
</tr>
<tr>
<td>&</td>
<td></td>
<td><input name="submit" type="submit" value=" Registrieren "/></td>
<td>&</td>
</tr>
</table>
</form>
<?php
}
$_connection=mysql_connect(DBHOST,DBBENUTZER,DBPASSWORT) or die('Fehler bei Verbindungsaufbau. Versuchen Sie es später noch einmal');
$_db=mysql_select_db(DB, $_connection) or die('Datenbank konnte nicht gewählt werden');

if (isset($_SESSION['login_okay']) and $_SESSION['login_okay'])
{
$_SESSION['ERROR'] = 2;
echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'?page=err">';
}
else
{
if(!(isset($_SESSION['Registrierungok'])) or !($_SESSION['Registrierungok']) )
{
if ((isset($_SESSION['Inputerror'])) and ($_SESSION['Inputerror'] == 1))
{
design_error();
}
design_Form();
}
else
{
$_SESSION['ERROR'] = 2;
echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'?page=err">';
}
if (isset($_POST['submit']))
{
$kundennr = Validate_Numfeld('kundennummer', 1000, 10000);
$vorname = Validate_Textfeld('vorname', 0, '');
$name = Validate_Textfeld('name', 0, '');
$email = Validate_Textfeld('email', 0, '');
$email2 = Validate_Textfeld('email2', 0, '');
$_SESSION['$kundennr'] = $kundennr;
$_SESSION['$vorname'] = $vorname;
$_SESSION['$name'] = $name;
$_SESSION['$email'] = $email;
$_SESSION['$email2'] = $email2;
if ($kundennr[0] and $vorname[0] and $name[0] and $email[0] and $email2[0])
{

}
else
{
$_SESSION['Inputerror'] = 1;
$_SERVER['PHP_SELF'];
exit();
}
$sql='SELECT * FROM KUNDE WHERE KUNDENNR=\''.$_POST['kundennummer'] .'\'';
$result=mysql_query($sql) OR die(mysql_error());

if (mysql_num_rows($result) == 0)
{
$_SESSION['ERROR'] = 3;
echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'?page=err">';
//$_SERVER['PHP_SELF'];
//die('Ihre Kundennummer konnte im System nicht gefunden werden.
Sie müssen im System als Kunde angelegt sein um sich für die Online-Bestellung registrieren zu können.
');
}
$Daten=mysql_fetch_assoc($result);
if ($Daten['KZ_REGISTRIERT'] == 'J')
{

$_SESSION['ERROR'] = 2;
echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'?page=err">';
}

if ((isset($_SESSION['ERROR'])) AND ($_SESSION['ERROR'] == 0))
{
$sql= 'Update
KUNDE
set
VORNAME = \''.$_POST['vorname'].'\',
NAME1 = \''.$_POST['name'].'\',
EMAIL = \''.$_POST['email'].'\',
KZ_REGISTRIERT = \'J\',
REGDATUM = now()
where
KUNDENNR=\''.$_POST['kundennummer'] .'\'';

$result = mysql_query($sql) OR die(mysql_error());
$text = 'Der Kunde mit der Kundennummer '.$_POST['kundennummer'].' hat sich für die Online-Brevetbestellung registriert.\n';
mail('dietrich@wsg-gmbh.de', 'Registrierung von Kundennr: '.$_POST['kundennummer'] , $text);
echo "Die Registrierungsanforderung wurde erfolgreich versendet. Sie werden per eMail benachrichtigt, sobald Ihre Freischaltung erfolgt ist.";
$_SESSION['Registrierungok'] = true;
}
}

}
?>

[/php:1:49334f6470]
 

the_real_didi

Aktives Mitglied

Die session is da. Die steht in der index.php. Das was du hier siehst wird nur in einem <div> aufgerufen. Die Session-Variablen werden auch gefüllt. Aber die Anzeige des Formulars hängt hinterher. Nach dem Absenden des Formulars wird ja eigentlich das gesamte Script wieder von vorn durchlaufen, richtig?
Dann bin ich der Meinung, dass dann aufgrund der gesetzten [php:1:c71601938f]$_SESSION['Inputerror'] = 1;[/php:1:c71601938f] Das Formular neu angezeigt werden müsste inkl. der Fehlermeldungen.

Ich weiß, dass das Script nicht besonders übersichtlich ist. Ich wäre auch sehr dankbar, wenn das Script zerpflückt und mir sagt, wie man sowas eigentlich richtig aufbaut. Da hab ich wohl keinen richtigen Plan von. Ich denke, da wird auch der Grund liegen, warum das nich funzt.

Hab versucht mit meinen primitiven Kenntnissen von PHP ne Registrierung auf die Reihe zu bekommen. Naja, ich wills ja lernen. Da könnt ihr mir bestimmt weiter helfen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben