php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2011, 16:39  
Neuer Benutzer
 
Registriert seit: 27.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
BKaSebbo befindet sich auf einem aufstrebenden Ast
Standard Probleme mit Formular und Undefinierter Variable

Hallo zusammen,

ich bin PHP neuling und habe ein kleines Problem. Ich habe ein Formular in einer HTML-Datei, dass via PHP, das Formular auslesen und anschließend die Daten per Mail versendet.

Funktioniert soweit alles bestens. Nur habe ich ein Problem. Sobald ich die PHP-Datei auf den Server lade wo Sie letzendlich hin soll, funktioniert es nicht mehr. Mit Error-reading habe ich rausgefunden das es sich anscheinend um eine Undefinierte Variable handelt.

Soweit so gut aber ich komm einfach nicht weiter. Hier mal mein Skript

Das HTML Skript mit dem Formular:
Code:
<form action="http://meinserver/formmailer.php" method="post">
	<table border="0" cellpadding="0" cellspacing="0">
	<tbody>
		<tr>
			<td align="left" valign="top"><span style="font-size: 10pt;">Meine Email-Adresse:</span></td>
			<td align="left" valign="top">&nbsp;</td>
			<td align="left" valign="top"><input name="email" size="30" type="text" /></td>
		</tr>
		<tr>
			<td align="left" valign="top"><span style="font-size: 10pt;">Ich komme aus:</span></td>
			<td align="left" valign="top">&nbsp;</td>
			<td align="left" valign="top"><textarea name="location" cols="26" rows="3"></textarea></td>
		</tr>
		<tr>
			<td colspan="3" align="right" valign="bottom"><br /> <input value="Senden" type="submit" /></td>
		</tr>
	</tbody>
	</table>
			<input name="danke" value="Vielen Dank für Ihre Mail!" type="hidden" />
</form>
Und hier das PHP-Skript:
Code:
<?
        $message = "";
	if (!empty($HTTP_GET_VARS)) 
	{
		while(list($name, $value) = each($HTTP_GET_VARS))
		$message.="$name = $value\n";
	}
	if (!empty($HTTP_POST_VARS)) 
	{
		while(list($name, $value) = each($HTTP_POST_VARS))
		$message.="$name = $value\n";
	}
		
 	$message=rawurldecode($message);
	$message=str_replace("+", " ", $message);		

    mail("meine@emailadresse.de", "betreff", $message, "From: $email\nReply-To: $email\nX-Mailer: PHP/");
  
  error_reporting(-1);
?>
<table width="1024" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    	<td width="210" align="center" valign="middle">&nbsp;</td>
        <td width="814" align="center" valign="middle"><font size="3">
        	<b>
				<? 
					echo $schreiben;
				?>
			</b>
Hat jemand von euch eine Idee wo der Fehlerteufel ist? Ich sitze jetzt schon ewig dran und mir raucht der Schädel.

Der Fehler scheint ja die Variable "schreiben" zu sein, aber ich komm nicht drauf was falsch ist.

LG

Sebbo
BKaSebbo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.12.2011, 17:00  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard

Spontan:
Du lässt das Forumlar abarbeiten auch wenn es nichts geschickt wurde.
um das Skript herum sollte erstmal folgendes stehen
PHP-Code:
if(isset($_POST['senden']))
{
  
//Verarbeitung
}
//Ausgebe 
Im Formular dann noch ein
PHP-Code:
<input type="hidden" name="senden" value="true"/> 
Damit erkennt dein Skript ob das Formular auch tatsächlich übergeben wurde.
Zweitens behandelst Du die Superglobalen ($_GET, $_POST) zu nachlässig, dein Skript verarbeitet jeden Schrott der ihm übergeben wird ; )
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.
serious-cool ist offline   Mit Zitat antworten
Alt 27.12.2011, 17:50  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von BKaSebbo Beitrag anzeigen
[...]
Code:
[...]
	if (!empty($HTTP_GET_VARS)) 
	{
		while(list($name, $value) = each($HTTP_GET_VARS))
		$message.="$name = $value\n";
	}
	if (!empty($HTTP_POST_VARS)) 
	{
		while(list($name, $value) = each($HTTP_POST_VARS))
		$message.="$name = $value\n";
	}
 [...]
[...]
Die Variablen $HTTP_POST_VARS und $HTTP_GET_VARS sind seid einiger zeit veraltet und funktionieren auf den modernen Server nicht mehr. Ändere diese mal durch $_POST und $_GET ab, dann kann daran schon mal kein Fehler liegen.
ChrisvA ist gerade online   Mit Zitat antworten
Alt 28.12.2011, 08:51  
Neuer Benutzer
 
Registriert seit: 27.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
BKaSebbo befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es mal wie folgt geändert. Hier der HTML-Code:

Code:
<form action="http://meinserver/formmailer.php" method="post">
	<table border="0" cellpadding="0" cellspacing="0">
	<tbody>
		<tr>
			<td align="left" valign="top"><span style="font-size: 10pt;">Meine Email-Adresse:</span></td>
			<td align="left" valign="top">&nbsp;</td>
			<td align="left" valign="top"><input name="email" size="30" type="text" /></td>
		</tr>
		<tr>
			<td align="left" valign="top"><span style="font-size: 10pt;">Ich komme aus:</span></td>
			<td align="left" valign="top">&nbsp;</td>
			<td align="left" valign="top"><textarea name="location" cols="26" rows="3"></textarea></td>
		</tr>
		<tr>
			<td colspan="3" align="right" valign="bottom"><br /> <input value="Senden" type="submit" /></td>
		</tr>
	</tbody>
	</table>
			<input name="danke" value="Vielen Dank für Ihre Mail!" type="hidden" />
			<input name="senden" value="true" type="hidden" />
</form>

Und hier das PHP-Skript:
Code:
<?
  if(isset($_POST['senden']))
{
        $message = "";
	if (!empty($_GET)) 
	{
		while(list($name, $value) = each($_POST))
		$message.="$name = $value\n";
	}
	if (!empty($_POST)) 
	{
		while(list($name, $value) = each($_POST))
		$message.="$name = $value\n";
	}
		
 	$message=rawurldecode($message);
	$message=str_replace("+", " ", $message);		

    mail("meine@emailadresse", "betreff", $message, "From: $email\nReply-To: $email\nX-Mailer: PHP/");
}  
  
  error_reporting(-1);
  
?>
  <table width="1024" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    	<td width="210" align="center" valign="middle">&nbsp;</td>
        <td width="814" align="center" valign="middle"><font size="3">
        	<b>
				<? 
					echo $schreiben;
				?>
			</b>
Leider sagt er mir noch immer das es eine Undefinierte Variable gibt, und zwar die Variable $schreiben. Ich bekomme zwar eine Mail aber diese enthält keinen Absender.
BKaSebbo ist offline   Mit Zitat antworten
Alt 28.12.2011, 09:01  
Erfahrener Benutzer
 
Registriert seit: 10.11.2011
Beiträge: 268
PHP-Kenntnisse:
Fortgeschritten
Solu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Variable "schreiben" wird ja auch nirgends angelegt, soweit ich dass sehe.
Solu ist offline   Mit Zitat antworten
Alt 28.12.2011, 09:03  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Ja, kann es sein, dass du noch ein altes PHP Buch besitzt das darauf beruht, dass register_globals aktiviert ist?
Woher soll $email, bzw $schreiber denn eine Wert bekommen, wenn sie niemals auf der linker Seite bei einer Zuweisung stehen?
ChrisvA ist gerade online   Mit Zitat antworten
Alt 28.12.2011, 09:12  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von BKaSebbo Beitrag anzeigen
Hier mal mein Skript

Das HTML Skript mit dem Formular:
Code:
<form action="http://meinserver/formmailer.php" method="post">
Ach Du Sche.ße. Schon wieder ein neuer SPAM-Generator.

Zitat:
Und hier das PHP-Skript:
Code:
<?
        $message = "";
	if (!empty($HTTP_GET_VARS)) # <--
In welchem Museum haste das Script denn gefunden? HTTP_*_vars wurden, wenn mich mein Alzheimer nicht belügt, ab der PHP Version 4.1.0 durch die neuen Superglobals $_GET, $_POST usw. abgelöst. Und PHP 4.1.0 mindestens 10 Jahre alt.
Zitat:
Hat jemand von euch eine Idee wo der Fehlerteufel ist?
Der sitzt vor Deiner Tastatur.

Geändert von meikel (28.12.2011 um 09:16 Uhr). Grund: falsch geschachtelte Kommentar-ubbTags
  Mit Zitat antworten
Alt 28.12.2011, 09:19  
Neuer Benutzer
 
Registriert seit: 27.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
BKaSebbo befindet sich auf einem aufstrebenden Ast
Standard

Ich habe das PHP-Skript aus einem Buch. Das mir ein Freund ausgeliehen hat. Es ist schon etwas älter wie ich sehe^^

Ja das der Fehlerteufel ich selbst bin ist klar, aber was genau mache ich falsch?

Zitat:
Zitat von BKaSebbo Beitrag anzeigen
Code:
<input name="schreiben" value="Vielen Dank für Ihre Mail!" type="hidden" />
<input name="senden" value="true" type="hidden" />
</form>
Das schreiben wird in dem HTML-Formular festgelegt. Ich hatte es versehentlich falsch aufgeschrieben. Aber es funktioniert leider immer noch nicht
BKaSebbo ist offline   Mit Zitat antworten
Alt 28.12.2011, 09:24  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisvA Beitrag anzeigen
register_globals
Heißt das Zauberwort, ab PHP 5 muss man (davor sollte man das auch schon so machen) alle Variablen im Skript initialisieren.
Auf die Variablen von Formularen kann man mittels $_GET und $_POST zugreifen, mach dich mal im Internet ein wenig schlau dazu.

PS: Wenn du noch weitere Projekte in PHP machen möchtest, empfehle ich die Investition in ein aktuelles Buch.
ChrisvA ist gerade online   Mit Zitat antworten
Alt 28.12.2011, 09:25  
Erfahrener Benutzer
 
Registriert seit: 10.11.2011
Beiträge: 268
PHP-Kenntnisse:
Fortgeschritten
Solu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann musst du aber anstatt
PHP-Code:
echo $schreiben
...
PHP-Code:
echo $_POST['schreiben']; 
verwenden um das was du möchtest zu erreichen.
Warum aber nicht gleich so?
PHP-Code:
echo "Vielen Dank für Ihre Mail!"
Der eigentliche Fehler ist aber der, dass das Buch noch nicht in der Tonne gelandet ist.
Solu ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session Variable in Formular feld übergeben Crunchip PHP Einsteiger 9 20.03.2011 11:15
Probleme mit Formular beim Erstellen mrsunvisible PHP Tipps 2010 48 19.11.2010 11:47
[Erledigt] Variable aus URL in Formular Elefterios PHP Tipps 2010 7 16.10.2010 12:24
Variable Posten und mit Formular auswerten t-stude PHP Tipps 2009 14 11.12.2009 15:07
[Erledigt] Optionsfeld ermitteln und variable in formular Leinberger PHP Tipps 2009 1 15.08.2009 11:50
Variable zurück an Formular schicken ?!?!? TeazY PHP Tipps 2008 5 18.12.2007 20:07
[Erledigt] Variable ohne Formular &quot;weiterschicken&quot; PHP Tipps 2007 15 21.12.2005 15:49
Variable aus Formular auslesen .. PHP Tipps 2005-2 10 25.10.2005 15:48
Probleme mit Formular PHP Tipps 2005-2 3 08.09.2005 16:00
Probleme mit sehr großem Formular PHP Tipps 2005-2 4 01.09.2005 09:52
Formular variable gestallten PHP Tipps 2005-2 2 03.08.2005 12:03
wieso bleibt variable aus dem Formular auf FALSE? nieselfriem PHP Tipps 2004-2 6 03.12.2004 01:06
Wert aus Formular in Variable speichern PHP Tipps 2004-2 2 01.12.2004 16:56
[Erledigt] Probleme mit dem anzeigen von Daten in einem Formular PHP Tipps 2004 2 26.07.2004 19:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php undefiniertes formularfeld

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum