PHP Filter auf Einträge in Textdatei

Atreju93

Lieutenant
Registriert
Nov. 2010
Beiträge
594
Hallo zusammen

Ich bin echt am verzweifeln.. ich bin PHP neuling, aber habe Erfahrungen mit anderen Objektorientierten Programmiersprachen (C#).

Mein Problem.. ich bin daran eine Umfrage in PHP zu programmieren... Die User müssen sich anmelden. Username und PW werden verschlüsselt in einer Textdatei abgelegt (Das will ich so!). Die User können dann Verschiedene Fragen mit Radiobuttons beantworten. In einer Textdatei werden der Benutzername (verschlüsselt), die Fragekategorie und ihre Antworten abgespeichert. Die Antwortdatei sieht z.b. so aus:

Code:
098f6bcd4621d373cade4e832627b4f6|Schule|Gar nicht|Gar nicht
098f6bcd4621d373cade4e832627b4f6|Schule|Neutral|Neutral
098f6bcd4621d373cade4e832627b4f6|Schule|Gar nicht|Weniger
098f6bcd4621d373cade4e832627b4f6|Schule|Gar nicht|Weniger
098f6bcd4621d373cade4e832627b4f6|Schule|Weniger|Gar nicht
098f6bcd4621d373cade4e832627b4f6|Schule|Gar nicht|Gar nicht
098f6bcd4621d373cade4e832627b4f6|Schule|Gar nicht|Gar nicht

Die Einträge sind mit einem "|" voneinander getrennt.

Jetzt stehe ich vor dem Problem: Die User sollen am Ende der Umfrage ihre Ergebnisse sehen.. dazu muss ich einen "Filter" auf die Einträge setzen, damit sie nur die Antworten mit ihrem Username sehen.

ich hab folgenden Code dazu programmiert:

Code:
<?php//Session starten
session_start();
//Sessionvariable "berechtigt" auslesen und in lokale Variable $auth schreiben
	$auth = $_SESSION["berechtigt"];
//Aktuellen User aus Session lesen und in variable $username speichern
if(isset($_SESSION["username"])) {
$username = md5($_SESSION["username"]);
}
else {
echo "Die Sesssion konnte nicht überprüft werden. Sind sie angemeldet?";
}
	
//überprüfen ob User ein gültiges Login hat, falls nicht auf Startseite umleiten
if ($auth != "1") {
	//header("location:index.php");
	echo "Die variable auth enthält nicht 1";
}

//Antwortdatei öffnen und Antworten vom eingeloggten Benutzer anzeigen

$antwortdatei = fopen ("antworten/antworten.txt","r");
$ArrUserAntw = "Platzhalter";

while (!feof($antwortdatei))
   {
	   $zeile = fgets($antwortdatei,500);
	   $zwischenAntw = explode("|", $zeile);
	   
	   if ($username == $zwischenAntw[0]) {
	   echo "Username in Antworten gefunden!";
	   //Index: 1: Kategorie, 2: Antwort 1, 3: Antwort 2
	   $ArrUserAntw = array ($zwischenAntw[1], $zwischenAntw[2], $zwischenAntw[3]);
	   }
	   else {
	   echo "Du hast da nen Fehler... username nicht in Antworten gefunden oder so..";
	   }
   }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
   
<html>	
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
		<link href="css/umfrage_style.css" rel="stylesheet" type="text/css" />
         <title>Ergebnisse</title>
   </head>
   
	<body>
		<div id="ergebnisse" class="content">
			Sie haben folgende Antworten hinterlassen:
							<table border="1">
					<tr>
						<td> 
						Kategorie: <?php echo $ArrUserAntw[0];?>
						</td>
						<td>
						Antwort 1: <?php echo $ArrUserAntw[1];?>
						</td>
						<td>
						Antwort 2: <?php echo $ArrUserAntw[2];?>
						</td>
					</tr>
					<tr>
						<td>
						</td>
					</tr>
					<tr>
						<td>
						</td>
					</tr>
				</table>
			
		</div>
	</body>
  
</html>

Leider scheint er ein Problem zu haben mit dem Array "ArrUserAntw" - denn wenn ich das Script ausführe bekomme ich vom webserver folgende Fehlermeldung:
Code:
Kategorie: 
Notice: Undefined variable: ArrUserAntw in C:\xampp\htdocs\Umfrage\ergebnisse.php on line 56
Antwort 1: 
Notice: Undefined variable: ArrUserAntw in C:\xampp\htdocs\Umfrage\ergebnisse.php on line 59
Antwort 2: 
Notice: Undefined variable: ArrUserAntw in C:\xampp\htdocs\Umfrage\ergebnisse.php on line 62

Ich hab schon den Überblick verlohren und komme einfach nicht weiter.... villeicht mache ich es auch zu kompliziert?

Ich möchte, dass die Antwortdatei eingelesen wird.. dann wird über die Session den aktuellen Benutzername mit md5 verschlüsselt und mit dem 1. Eintrag der jeweilgen Zeile verglichen. Falls das übereinstimmt, werden die restlichen Einträge der Zeile in das Array gespeichert und schliesselich unten ausgegeben.

Mfg
 
Lass die $zwischenAntw[1,2 und 3] mal per echo raus. Z.B. auf Zeile 28.
Wenn Dich das auf keine Spur bringt, deklariere die Variable bereits vor der Schleife als Array, gleich auf Zeile 22.
 
Ich habs herausgefunden.. ich habe ganz am anfang <?php//Session starten geschrieben.. und das mag der Browser wohl gar nicht.. und hats nicht als PHP angesehen
 
Richtig du musst, damit die Datei als PHP-Datei interpretiert wird immer ein Leerzeichen schreiben nach dem "<?php "

Also statt
<?php//Session

schreibst du
<?php //Session
 
Zurück
Oben