Neuladen der Seite bei "Abschicken und Javascriptbox

blck

Mitglied
Hallo,
folgendes:
Ich habe ein Userinterface, dort gibt der User mehere Daten an(Textfelder).
Nun ist es ja so, dass bei einem normalen Absenden per PHP die Seite ja neugeladen wird. Hier liegt das Problem den nach if($_POST) überprüfe ich ob die Angaben in ORdnung sind und gebe dann evtl. per Java PopUp einen Fehler aus.
Nur wie verhinder ich, dass bei einem Fehler alle Angaben des Users(dank neuladen des PHP)verschwunden sind?

Hoffe es war verständlich...
MfG Blck
 
Hallo,
danke für deine Antwort, ich soll also

PHP:
  <input name="foo" value="<?PHP echo $_POST["foo"]; ?>" />

Für meine Input-Felder nehmen?

MfG Blck
 
Ja. Mit
PHP:
<?PHP echo $_POST["feldname"]; ?>
kannst du überall in deinem Markup die übermittelten Daten wieder erscheinen lassen, sofern dein WebSpace oder Server PHP unterstützt.
 
Hallo,
danke für deine Antwort, ich soll also

PHP:
  <input name="foo" value="<?PHP echo $_POST["foo"]; ?>" />

Für meine Input-Felder nehmen?

MfG Blck

Es geht zwar so, wie es oben steht, jedoch würde ich vor der Ausgabe noch mindestens 2 Funktionen aufrufen, um die Daten zu filtern. Sonst hast du ganz schnell mal eine XSS Lücke offen ;)

PHP:
  <input name="foo" value="<?php echo htmlentities(stripslashes($_POST["foo"])); ?>" />

So, die erste Funktion "stripslashes" entfernt zuerst mal die oftmals störenden Backticks (\) vor den Anführungszeichen. Eventuell ist ja so was bei Usereingaben nicht erwünscht ;)

Die zweite Funktion "htmlentities" wandelt alle Sonderzeichen in ihr HTML-Pendant (weiß auch nit genau, wie ich das nennen soll) um. Er maskiert die Zeichen, so dass sie vom Browser nicht mehr interpretiert werden.

Gruß
Bratkartoffel
 
Zuletzt bearbeitet:
PHP:
echo"
<!--main container!-->
 <div id='main'>
  <div id='textarea' class='sh_javascript'>
   <br>
    <form name='blog' action='' method='POST'>
    <table>
     <tr><td><h2 class='title'>Thema:</h2><input type='text' name='thema' value='$thema'></td>..."

So sieht meine Form aus...Daten werden mit htmlentities etc bearbeitet und in $feld gespeichert allerdings erst nach diesem Part...
So wie es oben steht funktioniert es leider nicht... Habt ihr eine Idee
Vielen Dank,
Blck
 
An diesem einem Befehl ist nichts falsch, soweit ich das sehen kann. Kannst uns bitte noch ein bisschen mehr Futter geben?

Ach ja, bevor du nen ewig langen "echo"-Befehl machst, kannst auch deinen PHP-Teil zumachen, und wennst ihn wieder brauchst, aufmachen. (Ist meiner Meinung nach auch übersichtlicher) ;)

Beispiel:

PHP:
<?php
   $foo="bar";
?>
Eine Menge <b>HTML</b>.......
<?php
   echo $foo;
?>
Noch ein bisschen <span style="foo: bar;">HTML</span>

So hat das Forum dann auch keine Probleme mit dem Syntaxhighlightning (farbliche Hervorhebung der PHP und HTML-Befehle)

Gruß
Bratkartoffel
 
Hallo,
der ellenlange ECHO-Befehl ist nicht schön, das weiß ich, jedoch wird die Seite nur angezeigt, wenn eine Variable gesetzt ist. Deshlab der Befehl....

Mehr Futter?
Hier mal der ganze Code:
PHP:
echo"
<!--main container!-->
 <div id='main'>
  <div id='textarea' class='sh_javascript'>
   <br>
    <form name='blog' action='' method='POST'>
    <table>
     <tr><td><h2 class='title'>Thema:</h2><input type='text' name='thema' value='$thema'></td>
     <td><h2 class='title'>Themenfeld:</h2>
      <select name='themenbereich'>
	<option value=''>---</option>
	<option value='Datenschutz'>Datenschutz</option>
	<option value='Internet'>Internet</option>
      </select>
     </td></tr>
    </table>
	<br><br>
     <h2 class='title'>Dein Beitrag:</h2>
	<br>
     <textarea name='blogentrie' cols='75' rows='15' wrap='hard' >$beitrag</textarea>
	<br>
     <div align='center'><input type='submit' name='submit' value='Abschicken!'></div>
    </form>
   <script type='text/javascript'>sh_highlightDocument();</script>
  </div>
 </div>
<!--right container!-->
 <div id='news'>
  <h2 class='title'> NEWS </h2>
	<marquee direction='down' scrolldelay='120' height='750px'>
	Hier laufen demn&auml;chst<br>
	Info's rund um das Web 2.0.
	</marquee>
 </div>
</body>
</html>";

if ($_POST)
{
#Variablen aus Userinterface hohlen
$thema = $_POST['thema'];
$feld = $_POST['themenbereich'];
$beitrag = $_POST['blogentrie'];

#Usereingaben unschädlich machen
htmlentities($thema);
mysql_real_escape_string($thema);
htmlentities($beitrag);
mysql_real_escape_string($beitrag);
Sollte ja funktionieren, da die Seite ja die PHP-Variablen speichert und danach neulädt...
MfG Blck
 
Hmm, also wenn das alles ist, dann kanns (leider) nit gehen ;)

Du rufst die Daten ja erst nach der Ausgabe ab. Bis dahin ist die Variable leer.

der ellenlange ECHO-Befehl ist nicht schön, das weiß ich, jedoch wird die Seite nur angezeigt, wenn eine Variable gesetzt ist. Deshlab der Befehl....

Hmm, versteh ich jetz nit ganz. So was braucht man eigentlich nie :D

Du gibst erst eine Variable aus (z.b. $thema), welche aber zu dem Zeitpunkt noch leer ist. Und erst DANN gibst du ihr einen Wert. Das ganze musst du umdrehen.

Ausserdem ist die Bedingung "Wenn $_POST" immer wahr, du musst schon explizit fragen, welchen Teil von $_POST geprüft werden soll.

HTML:
<?php
if ($_POST['thema'])
{
#Variablen aus Userinterface hohlen
$thema = $_POST['thema'];
$feld = $_POST['themenbereich'];
$beitrag = $_POST['blogentrie'];

#Usereingaben unschädlich machen
$thema=htmlentities($thema);
$thema=stripslashes($thema);
$beitrag=htmlentities($beitrag);
$beitrag=stripslashes($beitrag);  
}
?>
    <!--main container!-->
    <div id="main">
      <div id="textarea" class="sh_javascript">
        <br>
        <form name="blog" action="" method="POST">
          <table>
            <tr>
              <td>
                <h2 class="title">Thema:</h2>
                <input type="text" name="thema" value="<?=$thema; ?>">
              </td>
              <td>
                <h2 class="title">Themenfeld:</h2>
                <select name="themenbereich">
                  <option value="">---</option>
                  <option value="Datenschutz">Datenschutz</option>
                  <option value="Internet">Internet</option>
                </select>
              </td>
            </tr>
          </table>
          <br>
          <br>
          <h2 class="title">Dein Beitrag:</h2>
          <br>
          <textarea name="blogentrie" cols="75" rows="15" wrap="hard"><?=$beitrag; ?></textarea>
          <br>
          <div align="center">
            <input type="submit" name="submit" value="Abschicken!">
          </div>
        </form>
        <script type="text/javascript">sh_highlightDocument();</script>
      </div>
    </div>
    <!--right container!-->
    <div id="news">
      <h2 class="title"> NEWS </h2>
        <marquee direction="down" scrolldelay="120" height="750px">
          Hier laufen demn&auml;chst<br>
          Info"s rund um das Web 2.0.
        </marquee>
    </div>
  </body>
</html>

Ausserdem geben die Funktionen "htmlentities" und "mysql_real_escape_string" (wobei 2teres hier wohl das falsche war) was zurück. Das was die zurück geben, musst du neu in die Variable speichern.

So, probier mal bitte meinen 2ten Code aus, der sollte gehen.
 
Danke so klappt es fast...
Das Problem ist nun, dass die Javaboxen, die den Fehlermelden auch beim ersten start auftauchen...
MfG Blck

P.S. Vielen Dank fürs Einrücken ;D
 
Zurück