Textausgabe an die richtige Stelle setzten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Thunfischbrot
Mitglied
Beiträge: 99
Registriert: 06.03.2010 11:12

Textausgabe an die richtige Stelle setzten

Beitrag von Thunfischbrot »

Hallo,

ich habe folgendes Problem. Ich habe auf meiner Webseite ein Kontaktformular installiert. Dabei handelt es sich um ein fertiges.
Dieses hier:

Kontaktformular Ver. 1.0.10 vo der Seite http://www.cb-talk.de/index-site-download.html

Das Formular selber funktioniert, catpcha funktioniert, Mail wird versendet und kommt auch an.

http://www.ut-photo.de/kontakt.php

Mein Problem ist die Fehlermeldung bzw. die Bestätigen nach dem man das Formnular ausgefüllt und versendet hat.

Die sieht nämlich so aus:
http://img10.imageshack.us/img10/1903/formular.jpg

Dabei sollte natürlich das ganze im mittelteil der Webseite sein.

Meine Frage ist nun, wie bekomme ich das ganze so hin, das die Ausgabe im BODY Teil der Seite ist und nicht mehr im Header.

Anbei noch zwei Dateien, einmal das Formular und einmal das "nach dem versenden".

http://www.ut-photo.de/kontakt.zip

Es wäre wirklich toll, wenn mir einer von euch helfen könnte.

In der Datei kontakt_ausw.php ist im Body noch der Teil vom Kontaktformular drinne, ich weiß das der noch raus muss.

Danke


das ist der Code von der Datei kontakt_ausw.php

Code: Alles auswählen

<?
	// Session starten und confog.php includen
	session_start();
	include ("config.php");
	
	// CaptchaCodes abfragen
	$CAPTCHA_RandomText = "";
	if (isset($_POST['txtCode'])){
	$CAPTCHA_EnteredText = str_replace("<","",str_replace(">","",str_replace("'","",str_replace("[","",str_replace("]","",$_POST['txtCode'])))));
	}
	if (isset($_SESSION['CAPTCHA_RndText'])) {
	$CAPTCHA_RandomText = $_SESSION['CAPTCHA_RndText'];
	}

	// Eingabefelder abfragen
	$_SESSION['name'] = $_POST['name'];
	$_SESSION['email'] = $_POST['email'];
	$_SESSION['betreff'] = $_POST['betreff'];
	$_SESSION['nachricht'] = $_POST['nachricht'];
	
	$email_i = $_SESSION['email'];
	
	// Email Funktion
	function pruefe_mail($email_i) {
		  if(strstr($email_i, "@")) {
			$email_i = explode ("@", $email_i);
			if(strstr($email_i[1], ".")) $ok = TRUE;
		  }
		  return $ok;
		}
	
	// Eingaben prüfen
	$fehler = "";
	if(!pruefe_mail($email_i) && !empty($email_i)) {
			$fehler .= "<li>Email fehlerhaft!</li>";
			}
			if ($_SESSION['name'] == ""){ 
			$fehler .= "<li>Name fehlt!</li>";
			}
			if ($_SESSION['email'] == ""){ 
			$fehler .= "<li>Email fehlt!</li>";
			}
			if ($_SESSION['betreff'] == ""){ 
			$fehler .= "<li>Betreff fehlt!</li>";
			}
			if ($_SESSION['nachricht'] == ""){ 
			$fehler .= "<li>Nachricht fehlt!</li>";
			}
			if ($CAPTCHA_EnteredText == $CAPTCHA_RandomText and isset($_POST['txtCode']) == true and isset($_SESSION['CAPTCHA_RndText'])){
			$captcha = true;
			} else {
			$fehler .= "<li>Captcha fehlt oder fehlerhaft!</li>";
			}
	echo '<div style="border: 1px #000 solid; width: 350px; padding: 5px;">';		
	if ($fehler == ""){
	// Email zumsammensetzen
	$email = "From: " . $_SESSION['email'];
	$nachrichtfertig = $_SESSION['name']. " schrieb: \n\n" . $_SESSION['nachricht'];
	$versand = mail($empfaenger, $_SESSION['betreff'], $nachrichtfertig, $email);
			if ($versand) {
			echo '<h3>Kontaktformular</h3>
			<p>Email ist erfolgreich versendet worden!</p>';
			
			// Sessionvariablen löschen
			unset($_SESSION['name']);
			unset($_SESSION['email']);
			unset($_SESSION['betreff']);
			unset($_SESSION['nachricht']);
			}
			
	} else {
	echo '<h3>Kontaktformular</h3>';
	echo $fehler;
	echo '<p><a href="kontakt.php">zurück</a></p>';
	}
	echo '</div>';	

	// Session unset
	unset($_SESSION['CAPTCHA_RndText']);
	
?>
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Textausgabe an die richtige Stelle setzten

Beitrag von cYbercOsmOnauT »

Hallo auch,

Du musst die Abfrage und die Ausgabe des Fehlers/der OK-Meldung auch im Quellcode korrekt plazieren. Bei Dir ist es ganz oben und somit werden auch die echos vor dem <head> ausgegeben. Korrekt wäre ganz oben

Code: Alles auswählen

<?php
	// Session starten und config.php includen

	session_start();

	include ("config.php");

	// CaptchaCodes abfragen
	$CAPTCHA_RandomText = "";
	if (isset($_POST['txtCode'])){
	$CAPTCHA_EnteredText = str_replace("<","",str_replace(">","",str_replace("'","",str_replace("[","",str_replace("]","",$_POST['txtCode'])))));
	}
	if (isset($_SESSION['CAPTCHA_RndText'])) {
	$CAPTCHA_RandomText = $_SESSION['CAPTCHA_RndText'];
	}

	// Eingabefelder abfragen
	$_SESSION['name'] = $_POST['name'];
	$_SESSION['email'] = $_POST['email'];
	$_SESSION['betreff'] = $_POST['betreff'];
	$_SESSION['nachricht'] = $_POST['nachricht'];

	$email_i = $_SESSION['email'];
	
	// Email Funktion
	function pruefe_mail($email_i) {
		  if(strstr($email_i, "@")) {
			$email_i = explode ("@", $email_i);
			if(strstr($email_i[1], ".")) $ok = TRUE;
		  }
		  return $ok;
		}
?>
und über

Code: Alles auswählen

<form method="post" action="kontakt_ausw.php" name="kontakt">
dann den Rest

Code: Alles auswählen

<?php
	// Eingaben prüfen
	$fehler = "";
	if(!pruefe_mail($email_i) && !empty($email_i)) {
			$fehler .= "<li>Email fehlerhaft!</li>";
			}
			if ($_SESSION['name'] == ""){ 
			$fehler .= "<li>Name fehlt!</li>";
			}
			if ($_SESSION['email'] == ""){ 
			$fehler .= "<li>Email fehlt!</li>";
			}
			if ($_SESSION['betreff'] == ""){ 
			$fehler .= "<li>Betreff fehlt!</li>";
			}
			if ($_SESSION['nachricht'] == ""){ 
			$fehler .= "<li>Nachricht fehlt!</li>";
			}
			if ($CAPTCHA_EnteredText == $CAPTCHA_RandomText and isset($_POST['txtCode']) == true and isset($_SESSION['CAPTCHA_RndText'])){
			$captcha = true;
			} else {
			$fehler .= "<li>Captcha fehlt oder fehlerhaft!</li>";
			}
	echo '<div style="border: 1px #000 solid; width: 350px; padding: 5px;">';		
	if ($fehler == ""){
	// Email zumsammensetzen
	$email = "From: " . $_SESSION['email'];
	$nachrichtfertig = $_SESSION['name']. " schrieb: \n\n" . $_SESSION['nachricht'];
	$versand = mail($empfaenger, $_SESSION['betreff'], $nachrichtfertig, $email);
			if ($versand) {
			echo '<h3>Kontaktformular</h3>
			<p>Email ist erfolgreich versendet worden!</p>';
			
			// Sessionvariablen löschen
			unset($_SESSION['name']);
			unset($_SESSION['email']);
			unset($_SESSION['betreff']);
			unset($_SESSION['nachricht']);
			}
	} else {
	echo '<h3>Kontaktformular</h3>';
	echo $fehler;
	echo '<p><a href="kontakt.php">zurück</a></p>';
	}
	echo '</div>';	

	// Session unset
	unset($_SESSION['CAPTCHA_RndText']);
?>
Shorttags (<? anstelle von <?php) solltest Du vermeiden. Nicht jeder Server hat Shorttags bei PHP aktiv und wenn Du irgendwann "umziehst" könntest Du Probleme bekommen.

Viele Grüße,
Tekin (mit Vornamen ;))
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Thunfischbrot
Mitglied
Beiträge: 99
Registriert: 06.03.2010 11:12

Re: Textausgabe an die richtige Stelle setzten

Beitrag von Thunfischbrot »

Mail ist angekommen

Code: Alles auswählen


------------------------ Ursprüngliche Nachricht -------------------------
Betreff: Nur ein Testlauf
Von:     ***********************
Datum:   Fr, 5.11.2010, 00:17
An:      **************************
--------------------------------------------------------------------------

cYbercOsmOnauT schrieb: 

Im Textfield keine Quellcodeformatierungen nutzen!

Thunfischbrot
Mitglied
Beiträge: 99
Registriert: 06.03.2010 11:12

Re: Textausgabe an die richtige Stelle setzten

Beitrag von Thunfischbrot »

Hallo Tekin,

erstmal danke für deine Hilfe.

welchen Code Teil, muss ich denn jetzt in welche Datei kopieren?

Weil, ich habe ja zwei Dateien einmal die "kontakt.php" für das Formular und die "kontakt_ausw.php" mit der Fehlermeldung in der Falschen Ecke.

Ich bin jetzt ein wenig verwirrt.

Gruß
Tekin (mit Nachnamen :D )
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Textausgabe an die richtige Stelle setzten

Beitrag von cYbercOsmOnauT »

Ich habe lediglich in die kontakt_ausw.php geschaut. Und mein Hinweis mit dem Textfield bezieht sich auf die kontakt.php
Dort musst Du aus

Code: Alles auswählen

	  <textarea name="nachricht" rows="6" cols="40"><?if (isset($_SESSION['nachricht'])) { echo  $_SESSION['nachricht'] ; }?>
	  </textarea>
dies hier machen

Code: Alles auswählen

	  <textarea name="nachricht" rows="6" cols="40"><?if (isset($_SESSION['nachricht'])) { echo  $_SESSION['nachricht'] ; }?></textarea>
Ansonsten haut der Browser in die Textarea die Leerzeichen des Quelltextes als vorgegebenen Text ein.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Thunfischbrot
Mitglied
Beiträge: 99
Registriert: 06.03.2010 11:12

Re: Textausgabe an die richtige Stelle setzten

Beitrag von Thunfischbrot »

HAllo,

ok, aber jetzt habe ich folgende Meldung:

Code: Alles auswählen

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /is/htdocs/wp1065050_Z88FXH2F7A/www/foto/kontakt_ausw.php:1) in /is/htdocs/wp1065050_Z88FXH2F7A/www/foto/kontakt_ausw.php on line 4
Von der kontakt_ausw.php, egal ob bei Fehler oder erfolgreichem Versenden.

Gruß
Ufuk
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Textausgabe an die richtige Stelle setzten

Beitrag von cYbercOsmOnauT »

Ist die erste Zeile in Deiner kontakt_ausw.php vielleicht eine Leerzeile? Es darf vor einem session_start zu keiner Ausgabe kommen.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Thunfischbrot
Mitglied
Beiträge: 99
Registriert: 06.03.2010 11:12

Re: Textausgabe an die richtige Stelle setzten

Beitrag von Thunfischbrot »

Hallo,

PERFEKT ... Ich danke dir.

Hayirli geceler. :)

Gruß
Ufuk
Antworten

Zurück zu „Coding & Technik“