Prob mit POST

xeal

Mitglied
Hallo,

benötige mal eure Hilfe. Hab hier ein kleines Script geschrieben was Nachrichten in eine Datenbank eintragen soll. Die Seite wird per URL aufgerufen index.php?go=Mail..Anschließen zeigt sich ein Formular zur Eingabe der Daten. Dann wird mit einem Klick auf Senden die Seite Index.php?go=Mail&action=Verfassen&save=true aufgerufen. Der Parameter save=true bewirkt das nicht mehr das Formular angezeigt wird sondern die Speicherung der Daten. Mein Problem liegt darin das ich die Daten vom Formular nicht in save zurverfügung stehen. Versende die Daten mit POST, was mache ich falsch?

Danke schon mal für eure Hilfe

Hier das Script

Code:
      <?php
      
 	echo "<table cellspacing='2' cellpadding='0' width='$breite' align='center' font class='text'>";
      	echo "<tr bgcolor='$tbHintergrund'><td>";
      	echo "<font class='text'>Verfassen <br><br>";
      	echo "</td></tr>";
      	echo "<tr height=10><td>";
      	echo "</td></tr>";
      	
      // Hier gehts zur Speicherung   
      	if ($_GET['save'] =="true"){
      		echo "<tr>";	// Titel
      		echo "<td>Deine Nachricht wurd an ... gesendet</td>";
      		echo "</tr>";
      		echo "</tr>";
      		echo "<tr height=10><td>";
      		echo "</tr></td>";
      // # Formular Variablen  
      
 				$absender = $_SESSION["user_nickname"];
     			    $empfaenger= $HTTP_POST_VARS["empfaenger"];
 				$betreff = $HTTP_POST_VARS["betreff"];
 				$nachricht = $HTTP_POST_VARS["nachricht"];
      			
      // # Ende Variablen 
      		echo "<tr><td></td></tr>";
 		echo "<tr><td width=200>Absender: </td>	<td width=400>".	$absender 	."</td></tr>";
 		echo "<tr><td>Emfänger: </td> <td>".	$empfaenger ."</td></tr>";
 		echo "<tr><td>Betreff: </td> <td>".	$betreff ."</td></tr>";
 		echo "<tr><td>Nachricht: </td> <td>".	$nachricht ."</td></tr>";
      		echo "<tr>";
 		echo "<td><a href='index.php?go=Mail.&action=Verfassen'><font class='textLink'>Noch eine Mail verfassen?</a></td>";
      		echo "</tr>";
      	} else {
      // # Eingabe Formular 
      	echo "<td>Das Mail Formular </td><td>	</td>";
      	echo "</tr>";
      	echo "<tr height=10><td>"; 
      	echo "</tr></td>";
    	echo "<form action='' method='POST'>";
 	echo "<tr><td width=200 	>Absender: 	 </td>	<td width=400>". $_SESSION["user_nickname"] ."	 		 </td></tr>";
 	echo "<tr><td 		 >Empfänger:	 </td>	<td><input type='text' size='35 name='empfaenger'>		 	</td></tr>";
 	echo "<tr><td 		 >Betreff:	 </td>	<td><input type='text' size='35 name='betreff'>		 		</td></tr>";
 	echo "<tr><td valign='top'	>Nachricht 	</td>	<td><textarea cols='60' rows='15' name='nachricht'></textarea> </td></tr>";
      	echo "<tr height=10><td></td></tr>";
 	echo "<tr><td width=200> </td><td width=400><a href='index.php?go=Mail.&action=Verfassen&save=true'><font class='textLink'> Speichern</a><input type='button' name='senden' id='senden' value='Abbrechen'></td></tr>";
      	echo "</form>";
      	}
      
      echo "</table>";
      ?>
 
Zuletzt bearbeitet:
Das heißt method und nicht methode.

Außerdem kommt mir das bei ACTION ein bisschen komisch vor! Stimmt das so?
 
Zuletzt bearbeitet:
Habe den Fehler method verbessert und das action etwas verändert. Siehe Oben. Leider kommen immer noch keine Daten an.
 
Code:
    // # Eingabe Formular 
    	echo "<td>Das Mail Formular </td><td>	</td>";
    	echo "</tr>";
    	echo "<tr height=10><td>"; 
    	echo "</tr></td>";
  	echo "<form action='index.php' method='POST'>";
 	echo "<tr><td width=200 	>Absender: 	 </td>	<td width=400>". $_SESSION["user_nickname"] ."	 		 </td></tr>";
 	echo "<tr><td 		 >Empfänger:	 </td>	<td><input type='text' size='35 name='empfaenger'>		 	</td></tr>";
 	echo "<tr><td 		 >Betreff:	 </td>	<td><input type='text' size='35 name='betreff'>		 		</td></tr>";
 	echo "<tr><td valign='top'	>Nachricht 	</td>	<td><textarea cols='60' rows='15' name='nachricht'></textarea> </td></tr>";
    	echo "<tr height=10><td></td></tr>";
 	echo "<tr><td width=200> </td><td width=400><a href='index.php?go=Mail.&action=Verfassen&save=true'><font class='textLink'> Speichern</a>
<input type='hidden' name='go' value='Mail' />
<input type='hidden' name='action' value='Verfassen' />
<input type='hidden' name='senden' value='true' />
<input type='button' name='senden' id='senden' value='Abbrechen'></td></tr>";
    	echo "</form>";

Als form action kannst du nur eine Datei ohne weitere Parameter angeben. Die weiteren Werte solltest du dann also als input type=hidden übergeben. Ausserdem kannst du das action ganz weglassen, da du ja soweit ich es rauserkennen kann die selbe Seite nur mit anderen Parametern aufrufst.
Du solltest vielleicht nochmal überdenken ob du wirklich so viele Parameter übergeben musst...
 
hey,

habe nun den inhalt von action entfernt, den letzten Parameter save kann ich weglassen. Aber warum bekomme ich die vars nicht über $HTTP_POST_VARS["nachricht"]? Wie kann ich den mit einen hidden input arbeiten?
 
http://www.selfhtml.net ;-)

Ein hidden-field ist sozusagen ein vorausgefülltes Eingabefeld, dass der Browser nicht anzeigt...
Du solltest die einfachere Variante zum lesen von POST_VARS nehmen: $_POST['variable'].
Zudem solltest du mal in deiner PHP.ini checken, ob denn register_globals auch aus ist. Sollte es eingeschaltet sein werden alle variablen globalisiert...also heissen sie dann $variable statt $_POST['variable'].
 
Danke für deine Hilfe TeCe. Habe jetzt ein neues Formular gemacht und die Daten mit Post versendet und damit gehts wunderbar. Werd mir das aber nochmal mit den hidden felder reinziehen.

Danke
 
Es kommt wirklich ganz auf den Anwendungsfall an...
hiddens sind auch nicht so der Hammer...
Wenn du Beispielweise Passwörter an andere Seiten weitergeben willst wird das ziiieeemlich ärgerlich...da ist es dann schon etwas besser, wenn du die Variablen in einer session speicherst...oder noch besser nur eine checksumme oder oder oder...ich schweife ab...

Schau mal ob du es nicht hinkriegst, deine Variablen so weit zu minimieren, dass du nur höchstens eine hidden-variable brauchst:

PHP:
<html>
<head />
<body>
<form method=post>
<table align=center>
<?
if($_POST['mail'] == "true") {	//wenn Nachricht verschickt werden soll
	if(mail($_POST['to'], "Nachricht von ".$_POST['from'], $_POST['nachricht'])) {	//wenn Nachricht verschickt
		echo "Von:".$_POST['from']."<br />An:".$_POST['to'],"<br />Nachricht:<br />",$_POST['nachricht']." gesendet!";
	} else {	//wenn Fehler beim übermitteln der Nachricht
		echo "Fehler beim senden :-(";
	}
} else {	//Wenn noch keine Nachricht zum verschicken angegeben wurde:
?>
	<tr>
		<td align=right>Von</td>
		<td align=left><input type=text size=33 name=from></td>
	</tr>
	<tr>
		<td align=right>An</td>
		<td align=left><input type=text size=33 name=to></td>
	</tr>
	<tr>
		<td align=right>Nachricht</td>
		<td align=left><textarea name=nachricht cols=30 rows=10 wrap=physical></textarea></td>
	</tr>
	<tr>
		<td align=right><input type=submit name=mail value=true></td>
	</tr>
<?
}	////Wenn keine Nachricht angegeben wurde
?>
</table>		
</form>
</body>
</html>
 
Zurück