phpbar.de logo

Mailinglisten-Archive

[php] Skripte für erste Gehversuche mit POST, GET, SESSION

[php] Skripte für erste Gehversuche mit POST, GET, SESSION

Steffen Kother steffen.kother at gmx.net
Fre Sep 29 12:44:39 CEST 2006


Hallo Jörg,

leider fehlt mir der Rest der Threads von gestern, da ich den kompletten
nur daheim auf'm PC habe.

Von Haus aus bin ja ein gutmütiges Tier, aber irgendwie kann man deine
Hartnäckigkeit auch als Lernresistenz deuten. Sicher, wir alle haben mal
klein angefangen und auch _ich_ habe mal danach gefragt, Variablen
umzulenken ohne ein Formular zu verwenden... Mittlerweile, IMHO, habe
ich es praktikabel glöst.

Die PHP-ML ist eine sehr gute und vor allem auch schnelle Hilfe, eben
weil viele daran teilnehmen und es auch mehrere Betrachtungswinkel für
ein Problem geben kann. Aber alle haben hier einen gemeinsamen Nenner:
Wissen über PHP, HTML und client- bzw. serverseitige Skripte und deren
Verarbeitung.

Ich hänge dir unten an die Mail mal drei Quelltexte an, die du bitte so
nennst wie angegeben. Du musst nur die Pfadangaben in den
header()-Zeilen anpassen. Da Template ist nur da, weil ich keine Lust
hatte, es als Variable zu schreiben... Befasse dich erstmal mit den
simplen Sachen und dann meintewegen mit Templates oder Klassen usw.

--
Mit freundlichen Gruessen / Kind regards

Steffen Kother

eingabe.php
-----------
<?php
// begin of file eingabe.php

$vars_set = 0;

$name    = '';
$vorname = '';
$email   = '';

if (!empty($_REQUEST['edit_from_session']) &&
$_REQUEST['edit_from_session'] == true) {
	session_start();
	if (!empty($_SESSION['formulardaten'])) {
		if (!empty($_SESSION['formulardaten']['name'])) {
			$name = $_SESSION['formulardaten']['name'];
		}
		if (!empty($_SESSION['formulardaten']['vorname'])) {
			$vorname =
$_SESSION['formulardaten']['vorname'];
		}
		if (!empty($_SESSION['formulardaten']['email'])) {
			$email = $_SESSION['formulardaten']['email'];
		}
		session_destroy();
		$vars_set = 1;
	}
}

if (!$vars_set && !empty($_REQUEST['edit_from_get']) &&
$_REQUEST['edit_from_get'] == true) {
	if (!empty($_GET['name'])) {
		$name = $_GET['name'];
	}
	if (!empty($_GET['vorname'])) {
		$vorname = $_GET['vorname'];
	}
	if (!empty($_GET['email'])) {
		$email = $_GET['email'];
	}
	$vars_set = 1;
}

if (!$vars_set && !empty($_REQUEST['edit_from_post']) &&
$_REQUEST['edit_from_post'] == true) {
	if (!empty($_POST['hidden_name'])) {
		$name = $_POST['hidden_name'];
	}
	if (!empty($_POST['hidden_vorname'])) {
		$vorname = $_POST['hidden_vorname'];
	}
	if (!empty($_POST['hidden_email'])) {
		$email = $_POST['hidden_email'];
	}
}
?>
<html>
 <head>
  <title>Eingabe</title>
 </head>
 <body>
  <form action="what_to_do.php" method="post">
   Name: <input type="text" name="name"       value="<?php echo $name;
?>" />
   Vorname: <input type="text" name="vorname" value="<?php echo
$vorname; ?>"
/>
   Email: <input type="text" name="email"     value="<?php echo $email;
?>"
/>
   <br />
   <input type="submit" name="senden" value="Vorschau" />
   <input type="submit" name="senden" value="Speichern in DB" />
  </form>
 </body>
</html>
<?php
// end of file eingabe.php
?>

what_to_do.php
--------------
<?php
// begin of file what_to_do.php

if (!empty($_POST['senden']) && $_POST['senden'] == 'Vorschau') {
	$template = file_get_contents('vorschau.tpl');
	$action   = $_SERVER['PHP_SELF'];
	$method   = 'post';
	$content  = '';
	foreach ($_POST as $Key => $Value) {
		if ($Key != 'senden') {
			$content.= '<input type="text" name="'.$Key.'"
value="'.$Value.'" />';
			$content.= '<input type="hidden"
name="hidden_'.$Key.'" value="'.$Value.'" />'."\r\n";
		}
	}
	$template = str_replace('{action}', $action, $template);
	$template = str_replace('{method}', $method, $template);
	$template = str_replace('{content}', $content, $template);
	echo $template;
	exit;
}

if ((!empty($_POST['senden']) && $_POST['senden'] == 'Speichern in DB')
||
!empty($_POST['edit_from_session']) || !empty($_POST['edit_from_get']))
{

	if (!empty($_POST['senden'])) {
		// Verarbeitung für das Speichern in der Datenbank
		exit;
	}

	if (!empty($_POST['edit_from_session'])) {
		session_start();
		foreach ($_POST as $Key => $Value) {
			if ($Key != 'edit_from_session') {
				$_SESSION['formulardaten'][$Key] =
$Value;
			}
		}

		header("Location:
http://nbkother/rekl_v2_test/tmp/eingabe.php?edit_from_session=true");
		exit;
	}

	if (!empty($_POST['edit_from_get'])) {
		foreach ($_POST as $Key => $Value) {
			$QueryStringArray[] =
urlencode($Key).'='.urlencode($Value);
		}

		$QueryString = join('&', $QueryStringArray);
		header("Location:
http://nbkother/rekl_v2_test/tmp/eingabe.php?".$QueryString);
		exit;
	}
}

// end of file what_to_do.php
?>

vorschau.tpl
------------
<html>
 <head>
  <title>Vorschau</title>
  <script language="javascript">
   var what;

   function change_action(what) {
   	if (what == 'p') {
		document.forms[0].action = 'eingabe.php';
	} else {
		document.forms[0].action = 'what_to_do.php';
	}
   }
  </script>
 </head>
 <body>
  <form action="{action}" method="{method}">
   {content}
   <br />
   <input type="submit" name="edit_from_session" value="Edit mit
$_Session"
onclick="change_action('s')" />
   <input type="submit" name="edit_from_get" value="Edit mit $_GET"
onclick="change_action('g')" />
   <input type="submit" name="edit_from_post" value="Edit mit $_POST"
onclick="change_action('p')" />
   <input type="submit" name="senden" value="Speichern in DB"
onclick="change_action('d')" />
  </form>
 </body>
</html>



php::bar PHP Wiki   -   Listenarchive