Phil: Script übernimmt die Angaben nicht und - Endlosschleife??

Hi Leute! Ich habe ziemlich großes Problem!
Mein Ziel ist es, Daten per Formular abzuschicken, dann werden alle   " ", also Leerzeichen durch &nsbp; und alle Zeilenumbrüche durch <br> ersetzt. Dann wird alles in die Datei var.php reingeschrieben. (Die ich dann später includen werde).

Was passiert? Endlosschleife. Er schreibt die var.php bis zu 250MB groß voll bis ich den Browser beende.

Dabei gibt es auf dem Formular 4 Felder news(1-4).
Er soll die Felder per for-Schleife durchnehmen, auswerten und reinschreiben. Anschließend dann auf die index.php weiterleiten.

<?
if (file_exists("var.php")) {
 $fp = fopen( "var.php", 'w' );
 fwrite($fp, "<?\n");
 fwrite($fp, "$newsT1 = "<div class='k1'>";\n");
 $i = 1;
 $T = fwrite($fp, "$newsT2 = "</div><hr class='hr1'><div class='k1'>";\n");
 for ( $i=1; $i<=5; $i++) {
  $news.$i = $_POST['news.$i'];
  $umbruch.$i = nl2br($news.$i);
  $newsz.$i = str_replace(" ", "&nbsp;", $umbruch.$i);
  $news.$i = str_replace("\n", "<br>", $newsz.$i);
  fwrite($fp, "$news$i = "$news$i";\n");
  $T;
  }
 fwrite($fp, "$newsT3 = "</div>";\n");
 fwrite($fp, "$newsticker = "$newsticker";\n");
 fwrite($fp, "$l = "$l";\n");
 fwrite($fp, "?>");
 fclose($fp);
 header("Location: http://localhost/BIGPRO/ME/index.php");
 exit;
}
?>

Ich hoffe ihr könnt mir helfen!

  1. Hallo Phil,

    Was passiert? Endlosschleife. Er schreibt die var.php bis zu 250MB groß voll bis ich den Browser beende.
    <?
    for ( $i=1; $i<=5; $i++) {
      $news.$i = $_POST['news.$i'];

    Du möchtest wahrscheinlich eher ein Array verwenden, schlimmstenfalls variable Variablen.

    Nachdem Du $news und $i verkettet hast und das Ergebnis im Nirwana verschwunden ist, weist Du der Variablen $i den Wert von $_POST['news.$i'] zu. Bitte beachte, das ist etwas anderes als der Wert von $_POST['news1'], was Du erwartest, siehe PHP-Handbuch, Einfache Anführungszeichen (Single quoted) . In diesem Stil geht es Zeile für Zeile weiter.

    Du solltest daher zuerst mit error_reporting(E_ALL) dafür sorgen, dass Du über Deine Fehler informiert wirst.

    Freundliche Grüße

    Vinzenz

  2. Hi

    $news.$i = $_POST['news.$i'];

    "." wird in Javascript bei Objekten als auch bei Arrays benutzt verwendet

      
    var var_mit_indexname = "document";  
    window.document  
    window["document"]  
    window[variable_mit_objektename]  
    
    

    Bei PHP wird für Arrays nur "[...]", für Objekte "->" benutzt.

      
    $var_mit_indexname = "eigenschaft";  
      
    $array["eigenschaft"]  
    $array[$var_mit_indexname]  
      
    $objekt->eigenschaft  
    $objekt->$var_mit_indexname  
    
    

    Der Punkt ist für Zeichenkettenverknüpfungen:

      
    echo $begruessung." ".$name;  
    
    

    mfg
    Genie

  3. Hi,

    dann werden alle   " ", also Leerzeichen durch &nsbp; und alle Zeilenumbrüche durch <br> ersetzt.
    warum wilst Du die Daten verfälscht abspeichern?

    Dann wird alles in die Datei var.php reingeschrieben. (Die ich dann später includen werde).

    Warum so umständlich? Speichere die Daten doch einfach in eine Textdatei und werte sie dann bei Bedarf aus - wobei Du *dann* je nach gewünschter Ausgabe entsprechende Umwandlungen vornehmen kannst.

    <?

    da fehlt was; denk' auch an später - irgendwann könnte auch Dein Server short_open_tags deaktiviert haben.

    if (file_exists("var.php")) {

    Warum muß die Datei exstieren, wenn Du sie doch ohnehin überschreiben willst?

    fwrite($fp, "<?\n");

    da fehlt schon wieder was...
    Abgesehen davon, dass das wie gesagt besser eine Textdatei sein sollte.

    Brauchbare Dateiformate wären hier z.B. csv oder ini.

    freundliche Grüße
    Ingo