php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-10-2008, 12:41
augenblickpunkt
 Newbie
Links : Onlinestatus : augenblickpunkt ist offline
Registriert seit: Oct 2008
Beiträge: 13
augenblickpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard formularverarbeitung - textabbruch bei gänsefüßchen

hallo allerseits,

ich hänge bei einem e-mail-formular, bzw. dessen verarbeitung fest.

das ist das formular ("formular.php"):

PHP-Code:
<!-- Start Kontaktformular -->
 <
form action="formular_pruef.php" method="post" accept-charset="utf-8">
   <
p>
     <
input type="text" name="mailadresse" size="35" maxlength="60" value="Ihre Adresse f&uuml;r elektronische Post" />
   </
p>
   <
p>
    <
strong>Ihre Nachricht:</strong>
    <
br />
    <
textarea name="text" rows="10" cols="55">Hier kommt Ihre Nachricht rein. </textarea>
   </
p>
   <
p>
     <
input name="Senden" type="submit" value="E-Mail versenden" /> &nbsp; &nbsp;
     <
input name="Reset" type="reset" value="Eingaben zur&uuml;cksetzen" />
   </
p>
 </
form>
 <!-- 
Ende Kontaktformular --> 
soweit gut, das funktioniert.
die übergabe und anzeige im prüf-formular funktioniert auch ("formular_pruef.php"):

PHP-Code:
<a name="seitenanfang"></a>
<form action="formular_bestaet.php" method="post" accept-charset="utf-8">
<?php
$mailtext 
= ($_POST[text]);
$mailtext wordwrap ($_POST[text]);
$anzeige "
<p>Hallo,</p>
<p>***blablatext***.</p>
Folgende Daten haben Sie zur &Uuml;bermittlung eingegeben:
<p><pre>
<br /><span>E-Mail: <b>" 
$_POST[mailadresse] . "</b></span>
<br />Ihr Nachrichtentext:<b><br />" 

stripslashes($mailtext) . "</b>
</pre></p>
<p>&nbsp;</p>
"
;
echo (
$anzeige);
echo (
"<p><input name=\"Senden\" type=\"submit\" value=\"E-Mail jetzt versenden\"></p>
<p></p>"
);
// Felder und Daten aus Formular versteckt übernehmen
function form_daten() {
    if (isset(
$_POST)) {
        foreach (
$_POST as $key => $element) {
            echo 
"<input type=\"hidden\" name=\"$key\" value=\"$element\">";
        }
    }
    else {
        foreach (
$_GET as $key => $elem) {
            echo 
"<input type=\"hidden\" name=\"$key\" value=\"$element\">";
        }
    }
};
//-----
form_daten(); 
  
?>
</form>
<hr />
<p>
  Hier k&ouml;nnen Sie Ihre Eingaben korrigieren oder 
  <a class="seitenanfang" href="#seitenanfang" title="Sprung zum Seitenanfang">▲nach oben</a> zum Seitananfang springen:
</p>
<form action="formular_pruef.php" method="post" accept-charset="utf-8">
  <p>
    <input type="text" name="mailadresse" size="35" maxlength="60" value= "<?php echo $_POST[mailadresse?>" />
  </p>
  <p>
    <b>Ihre Nachricht:</b><br />
<textarea name="text" rows="10" cols="50" wrap="virtual" >
<?php echo stripslashes($mailtext?></textarea>
  </p>
  <p>
    <b>
      <input name="Senden" type="submit" value="Berichtigung abschicken">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
  </p>
</form>
</p>
die dritte datei ist die sendebestätigung und der schritt, mit dem die mail nun verschickt wird ("formular_bestaet.php"):

PHP-Code:
<?php
/* form_daten();  */
$mailtext stripslashes($_REQUEST[text]);
$mailtext wordwrap ($_REQUEST[text]);
// Empfänger
$empfaenger  $_REQUEST[mailadresse] . ', '// beachten Sie das Komma
// $empfaenger .= 'detlef_wd001@localhost';
// Betreff
$betreff "Kontaktformular:   " $_REQUEST[betreff];
// Meldung
$meldung 
"Hallo, <br />
<br />
Vielen Dank f&uuml;r Ihre Nachricht! ***blablatext***. 
<br />
Folgende Daten haben Sie uns &uuml;bermittelt: <br />
<pre>
E-Mail: " 
$_REQUEST[mailadresse] . "
<br />Ihr Nachrichtentext: <br />" 

$mailtext "
</pre>" 
"<br />
*****blablatext****** <br />
"
;
// Bei HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
$header  'MIME-Version: 1.0' "\n";
$header .= 'Content-type: text/html; charset=utf-8' "\n";
// Headerangaben, wie To, From, CC, Bcc, etc. können
// zusätzlich angefügt werden.
/* $header .= 'To: $_REQUEST[vorname] $_REQUEST[name] <$_REQUEST[mailadresse]>' . "\n";  */
$header .= 'From: kontaktformular@localhost' "\n";
/* $header .= 'Cc: [email]geburtstagsarchiv@beispiel.de[/email]' . "\r\n"; */
$header .= 'Bcc: detlef_wd001@localhost' "\n";
// Mail versenden
mail($empfaenger$betreff$meldung$header);
// Bildschirmausgabe der Sendebestätigung
$anzeige 
"<p>Hallo, </p>
<p>Vielen Dank f&uuml;r Ihre Nachricht! <br />
***blablatext***. </p>
<p>Folgende Daten wurden &uuml;bermittelt (Sie erhalten eine E-Mail zur Best&auml;tigung.): </p>
<div>
<pre>
<br />E-Mail: <b>" 
$_REQUEST[mailadresse] . "</b>
<br />Ihr Nachrichtentext:<b><br />" 
$mailtext "</b>
</pre>
</div>"
;
echo (
$anzeige);
?>
nun kommt das problem:
wenn der besucher ein hochkomma oder gänsefüßchen eingibt, wird der text mit einem backslash abgebrochen.
beispiel für eine eingabe:
EDIT:

http://www.babydienst.de
hier 'mein "text



ausgegeben und verschickt wird:
EDIT:

http://www.babydienst.de
hier \'mein \



bei hochkomma wird abgebrochen, wenn ich "$anzeige" in hochkommas setze.

das ganze zum testen:
formular.php

frage:
was kann ich tun, damit der text so ausgegeben und verschickt wird, wie ihn der benutzer eingibt?

sind evtl. noch andere (sicherheitsrelevante) dinge zu beachten?

danke im voraus für eure hilfe!

detlef
Mit Zitat antworten
  #2 (permalink)  
Alt 29-10-2008, 13:39
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

mysql_real_escape_string?

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 29-10-2008, 19:58
augenblickpunkt
 Newbie
Links : Onlinestatus : augenblickpunkt ist offline
Registriert seit: Oct 2008
Beiträge: 13
augenblickpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard danke, aber

...ich hätte gern gewußt, weshalb die übergabe vom formular zu formular_pruef so klappt, wie gewünscht, aber die übergabe von formular_pruef zu formular_bestaet dann nicht mehr.

"strpslashes()" funktioniert nur bei der ersten übergae.
warum nicht bei der zweiten?
wo ist mein denkfehler?

mit dem empfohlenen befasse ich mich morgen.
Mit Zitat antworten
  #4 (permalink)  
Alt 29-10-2008, 21:06
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard Re: danke, aber

Zitat:
Original geschrieben von augenblickpunkt
...ich hätte gern gewußt, weshalb die übergabe vom formular zu formular_pruef so klappt, wie gewünscht, aber die übergabe von formular_pruef zu formular_bestaet dann nicht mehr.

"strpslashes()" funktioniert nur bei der ersten überga[b]e.
Die Funkton stripslashes() würde ich nicht verwenden, weil sie weder geeignet ist, das spezielle (und antiquierte) Problem zu entschärfen, für das sie wahrscheinlich entwickelt wurde, noch irgendein anderes Escaping-Problem mit Sicherheit zu lösen. Es funktioniert zwar manchmal, aber eben nicht zuverlässig. Nebenbei bemerkt, entfernt sie Backslashes "\\" keine Quotes "'". ;-)

Zitat:
warum nicht bei der zweiten?
wo ist mein denkfehler?
Du benutzt die Funktion mail(), und übergibst ihr diverse Strings, die du vorher aus dem $_REQUEST-Array geklaubt hast. Mache dich kundig, welche Argumente von mail() wie "escaped" (enkodiert) werden müssen, damit in ihnen enthaltene Zeichen nicht mit in E-Mails verwendeten Zeichen mit Sonderfunktionen kollidieren. Die deutschsprachige Handbuchseite zu mail() (vor allem die Parameterliste) gibt dir da brauchbare Hinweise.

Und schau dir den Inhalt von $_REQUEST mal im Klartext an (bspw. mit var_dump()), um zu sehen, was wirklich im PHP-Script ankommt. Der Magic-Quotes-Quark sollte natürlich deaktiviert sein.

Zitat:
Zitat:
mysql_real_escape_string?
mit dem empfohlenen befasse ich mich morgen.
Da in deinem Quelltext keine mysql-Funktionen verwendet werden, wüsste ich nicht, wieso dir diese Funktion weiterhelfen sollte. Auf Argumente für mail() angewendet, hat sie das gleiche Problem wie stripslashes() -- sie könnte funktioneren, ist aber nicht für diesen Fall gedacht.

Geändert von fireweasel (29-10-2008 um 21:12 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:29 Uhr.