Register_global "$_REQUEST" Problem

schuett

Grünschnabel
Irgendwie funktioniert das Script nicht auf dem Webserver. Auf localhost geht es. Habe es schon mit $_REQUEST versucht, nichts passiert.

PHP:
<?php

     function beitrag_ausgeben ($beitrag)  {
	 
	 		  print "<b>Betreff: </b><b>".$beitrag["betreff"]."</b><br>";
              print "Text: ".$beitrag ["text"];
              print "<br>Autor: ".$beitrag ["autor"]."<hr>";
     }

     function beitrag_hinzufuegen () {
              
			global 	$betreff; $text; $autor; 
				
				$betreff = $_REQUEST["betreff"];
				$text = $_REQUEST["text"];
				$autor = $_REQUEST["autor"];
				$texte = file ("beitraege.txt");
				$neuer_text = $_POST[$text];
				$text_ohne = str_replace ("\n","",$neuer_text);
				$letzter_textindex = count ($texte)-3;                                                                     
				if (strlen($texte [$letzter_textindex]) !=  $text_ohne) {
				$datei = fopen ("beitraege.txt", "a");
				//$betreff = ($betreff == "") ? "kein Betreff" : $betreff;
				if ($betreff != "") {  
					  fputs ($datei, "\n$betreff");  
				} else {  
					  fputs ($datei, "\nKein Betreff");  
				}  
								fputs ($datei, "\n$text_ohne\n");
								fputs ($datei, "$autor");
								fclose ($datei);
									
								 }
							  }
							  
              function formular_anzeigen () {
                       ?>
                       <form action="forum.php" method="POST" >
					   		 Betreff: <input type="text" size="50" name="betreff" /> <br />
                             Text: <textarea name="text" cols="50" rows="10"></textarea> <br>
                             Autor: <input type="text" size=20 name="autor"> <br />
                             <p><input type="submit" value="Abschicken" /> 
                             </form>
		
                       <?php
				//	phpinfo();
              }
     ?>
 
PHP:
global     $betreff; $text; $autor;

Die Trennzeichen für global sind Kommas keine Semikolons.
Wenn diese Variablen aber durch das Formular kommen, sollte das nicht nötig sein, da du per $_POST direkt darauf zugreifen könntest.

Ansonsten mal [phpf]error_reporting[/phpf] auf E_ALL stellen.
 
Ok, Danke habe ich umgeändert.

PHP:
	global 	$betreff, $text, $autor;

Aber wie kann ich das Script auf dem Webserver zum laufen bringen ohne
PHP:
error_reporting()
.
 
error_reporting soll nur mögliche Fehler anzeigen, die man dann korrigieren könnte.

Ansonsten wäre es gut zu sehen, wie die Funktionen eingebunden werden.
 
Die Funktionen werden in der forum.php aufgerufen. Durch die externen Dateien funktionen.php und beitraege.php.

forum.php
PHP:
<?php
     include ("forumfunktionen.php");
     if (isset ($text)) beitrag_hinzufuegen();

     include ("beitraege.php");
?>
<html>
      <head>
            <title> Forum</title>
      </head>
	  
      <body>

            <h1> Willkomen beim Forum </h1>
			
            <b>Sagen Sie uns Ihre Meinung!</b><p/>
			
            <?php
            if (!isset ($gesperrt))
            	formular_anzeigen()
            ?>
			
            <hr>
			
            <?php
                 for ($i=0; $i < count ($beitrag); $i++) {
                 beitrag_ausgeben ($beitrag[$i]);
                 }
            ?>
			<br />
     </body>
</html>

forumfunktionen.php
PHP:
<?php

     function beitrag_ausgeben ($beitrag)  {
	 
	 		  print "<b>Betreff: </b><b>".$beitrag["betreff"]."</b><br>";
              print "Text: ".$beitrag ["text"];
              print "<br>Autor: ".$beitrag ["autor"]."<hr>";
     }

     function beitrag_hinzufuegen () {
              
			global 	$betreff, $text, $autor; 
				
				$betreff = $_REQUEST["betreff"];
				$text = $_REQUEST["text"];
				$autor = $_REQUEST["autor"];
				$texte = file ("beitraege.txt");
				$neuer_text = $_POST[$text];
				$text_ohne = str_replace ("\n","",$neuer_text);
				$letzter_textindex = count ($texte)-3;                                                                     
				if (strlen($texte [$letzter_textindex]) !=  $text_ohne) {
				$datei = fopen ("beitraege.txt", "a");
				//$betreff = ($betreff == "") ? "kein Betreff" : $betreff;
				if ($betreff != "") {  
					  fputs ($datei, "\n$betreff");  
				} else {  
					  fputs ($datei, "\nKein Betreff");  
				}  
								fputs ($datei, "\n$text_ohne\n");
								fputs ($datei, "$autor");
								fclose ($datei);
									
								 }
							  }
							  
              function formular_anzeigen () {
                       ?>
                       <form action="forum.php" method="POST" >
					   		 Betreff: <input type="text" size="50" name="betreff" /> <br />
                             Text: <textarea name="text" cols="50" rows="10"></textarea> <br>
                             Autor: <input type="text" size=20 name="autor"> <br />
                             <p><input type="submit" value="Abschicken" /> 
                             </form>
		
                       <?php
				//	phpinfo();
              }
     ?>

und beitraege.php
PHP:
<?php
	
     $datei = fopen ("beitraege.txt", "r");
     $i = 0;
     while (!feof($datei)) {
     $beitrag[$i]$_REQUEST["betreff"] = fgets ($datei, 1024);
     $beitrag[$i]$_REQUEST["text"] = fgets ($datei, 1024);
     $beitrag[$i]$_REQUEST["autor"] = fgets ($datei, 1024);
     $i++;
     }
   fclose ($datei);
?>

Und die Text-Datei "beitraege.txt" die über forumfunktionen aufgerufen wird.

Ich weiß wirklich nicht mehr weiter. Ansetzpunkt weiß ich nicht.

Code:
Kein Betreff
Computer sind doof
Bill Gates
Kein Betreff
Ufos existieren
Fox Mulder
Kein Betreff
Linux ist besser
 
Ok, als erstes korrigieren wir die beitraege.php
Was sollen die REQUEST da? Die haben überhaupt keine Funktion und sind schlichtweg falsch.

PHP:
<?php
    
     $datei = fopen ("beitraege.txt", "r");
     $i = 0;
     while (!feof($datei)) {
     $beitrag[$i]['betreff'] = fgets ($datei, 1024);
     $beitrag[$i]['text'] = fgets ($datei, 1024);
     $beitrag[$i]['autor'] = fgets ($datei, 1024);
     $i++;
     }
   fclose ($datei);
?>
Ich denke, es sollte so aussehen.

So, forumsfunktionen.php

PHP:
$neuer_text = $_POST[$text];
Macht ebenfalls keinen Sinn, es sollte so aussehen:
PHP:
$neuer_text = $_POST['text'];

Nach diesen Änderungen funktioniert es bei mir.
 
Hey, Perfekt danke. Funktioniert auf localhost.

Aber auf dem Webserver funktioniert es noch nicht, was kann ich da noch mit in das Script bringen, das es geht.

Webseite
 
Entschuldigung, habe eine Änderung vergessen:

In der Forum.php hattest du etwas wie if(isset($text) usw.

Dies sollte so aussehen:

PHP:
if (isset($_POST['text'])) beitrag_hinzufuegen();
 
Zurück