NetPerformance
Erfahrenes Mitglied
Hallo
Beim ersten start von meinem Programm werden die actions nicht erkannt.
Gesamte Quelle:
Wenn ich z.b. mein login-action in der Zeile 258 so verändere,
if(isset($_GET["login"])) {
...
}
funktioniert das Programm nicht mehr. Das Ganze sollte aber ohne isset funktionieren. Habe überall eine else if Abfrage und in der Zeile 594 eine leere else Bedingung.
Gruß und Dank im Voraus
Aaron
@Dennis Wronka:
Tolle Idee mein Quelltext direkt in das Forum zu posten. Jetzt sieht niemand mehr die Zeilennummerierung.
Beim ersten start von meinem Programm werden die actions nicht erkannt.
Gesamte Quelle:
Code:
<?php
error_reporting(E_ALL);
// Session
session_start();
$sessionid = session_id();
$inhalt = "willkommen.php";
$menue = "menue.php";
$id = "";
$matrikelnummer = "";
$generierte_seite = false;
// counter zaehlt die falschen Antworten zusammen
$counter = 0;
// Datenbak-Verbindung wird aufgebaut.
include_once('connect.php');
//**********************
// E-Mail Syntax Check *
//**********************
function email_check($email) {
if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email))
return FALSE;
else
return TRUE;
}
//**************************************************************************************
// Diese Methode traegt die bereits gestellten Fragen in der kattalog_temp Tabelle ein *
//**************************************************************************************
function frage_in_katalog_temp_eintragen ($matrikelnummer, $naechste_frage) {
// die oberste Frage + Matrikelnummer des Studenten wird in 'katalog_temp' gespeichert. Dadurch koennen wir jederzeit feststellen, welche Fragen einen Studenten bereits gestellt wurde.
$query_wird_beantwortet = "INSERT INTO kattalog_temp (
matrikelnummer,
id_frage
) VALUES (
'$matrikelnummer',
'$naechste_frage'
)";
$result_wird_beantwortet = mysql_query($query_wird_beantwortet) or die ("Fehlermeldung :<br>".mysql_error());
}//Ende function frage_in_katalog_temp_eintragen
/* ***********************************************************
Diese Methode generiert eine HTML Seite, die die oberste Frage aus dem Stack (array) mit dem den dazugehoerigen Antworten anzeigt.
*********************************************************** */
function html_seite_erzeugen ($naechste_frage, $level, $matrikelnummer) {
// Sobald alle Fragen beantwortet wurden, wird die Auswertung generiert
if ($naechste_frage=="") {
global $counter;
$query="SELECT * FROM kattalog_antworten a JOIN kattalog_temp_antworten t ON a.id_antwort = t.id_antwort WHERE matrikelnummer=$matrikelnummer";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
while($row = mysql_fetch_assoc($result)) {
if($row['wahrheit']=='0') {
$counter++;
}
}//Ende while
global $generierte_seite;
$generierte_seite = true;
global $inhalt;
$inhalt="Anzahl falsche Antworten: ".$counter;
// Nach der Auswertung werden die bereits gestellten Fragen aus kattalog_temp entfernt
$query="DELETE FROM kattalog_temp WHERE matrikelnummer=$matrikelnummer";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
// Nach der Auswertung werden die bereits beantworteten Fragen aus kattalog_temp_antworten entfernt
$query="DELETE FROM kattalog_temp_antworten WHERE matrikelnummer=$matrikelnummer";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
} else {
// in diesem array werden gleich alle Antworten zu $naechste_frage gespeichert
$naechste_frage_antworten = array();
// in diesem array werden gleich alle ids der Antworten gespeichert
$naechste_frage_antworten_id = array();
// gibt alle Antworten zu der ausgesuchten Frage aus
$query_suche_antworten = "SELECT * FROM kattalog_antworten WHERE id_frage='$naechste_frage'";
$result = mysql_query($query_suche_antworten) or die ("Fehlermeldung :<br>".mysql_error());
// gibt die zu der Frage passenden Antworten aus
while($row = mysql_fetch_assoc($result)) {
// das array beinhaltet alle level1 Antworten.
array_push($naechste_frage_antworten,$row['antwort']);
array_push($naechste_frage_antworten_id,$row['id_antwort']);
}
// Um die Frage als Klartext statt 'id_frage' anzuzeigen.
$query_fragestellung = "SELECT frage FROM kattalog_fragen WHERE id_frage='$naechste_frage'";
$result = mysql_query($query_fragestellung) or die ("Fehlermeldung :<br>".mysql_error());
// Hier wird die Frage passend zu id_frage in der Variable $fragestellung gespeichert.
$fragestellung="";
while($row = mysql_fetch_assoc($result)) {
$fragestellung=$row['frage'];
}
// Wird fuer das versteckte Feld benoetigt.
$anzahl_antworten = sizeof($naechste_frage_antworten);
/*
ob_start();
echo "$fragestellung";
echo "<table>";
echo "<form method='post' action='index.php?action=frage_anzeigen&level_auswahl=$level'>";
// Antworten + checkboxen werden erzeugt.
for($i=0; $i<=sizeof($naechste_frage_antworten)-1; $i++) {
echo "<tr><td><input type=checkbox name='antwort$i'></td><td>$naechste_frage_antworten[$i]</td></tr>";
echo "<tr><td><input type=hidden name='id_antwort$i' value=$naechste_frage_antworten_id[$i]</td></tr>";
echo "<br>";
}
echo "</table>";
echo "<input type=hidden name=anzahl_antworten value=$anzahl_antworten><br></table>";
echo "<input type=submit value=weiter></input>";
echo "</form>";
$html = ob_get_contents();
ob_end_flush();
*/
// Hier werden die Antworten + Checkboxen generiert
$html = "";
$html.= "$fragestellung";
$html.= "<table>";
$html.= "<form method='post' action='index.php?action=frage_anzeigen&level_auswahl=$level'>";
// Antworten + checkboxen werden erzeugt.
for($i=0; $i<=sizeof($naechste_frage_antworten)-1; $i++) {
$html.= "<tr><td><input type=checkbox name='antwort$i'></td><td>$naechste_frage_antworten[$i]</td></tr>";
$html.= "<tr><td><input type=hidden name='id_antwort$i' value=$naechste_frage_antworten_id[$i]</td></tr>";
$html.= "<br>";
}
$html.= "</table>";
$html.= "<input type=hidden name=anzahl_antworten value=$anzahl_antworten><br></table>";
$html.= "<input type=submit value=weiter></input>";
$html.= "</form>";
// generierte Seite wird auf true gesetzt, damit include durch echo ersetzt wird. Ich benoetige echo, da ich mit include den $html String nicht darstellen kann.
global $generierte_seite;
$generierte_seite = true;
// var_dump($generierte_seite);
// global - Damit die Definition der $inhalt Variable ueberschrieben wird.
global $inhalt;
$inhalt = $html;
}//ENDE Auswertung
}//Ende function html_seite_erzeugen
/* *************************************************************************
Hier werden die noch nicht gestellten Fragen ausgesucht in einem Stack (array) gespeichert. Anschliessend werden die Methoden zum generieren der Ansichtsseite und die Methode zum eintragen der bereits gestellten Fragen ausgefuehrt.
************************************************************************** */
function frage_und_antwort_generieren($level) {
$matrikelnummer = $_SESSION['matrikelnummer'];
// in diesem array werden gleich alle levelx Fragen gespeichert, die noch nicht gestellt wurden.
$fragen = array();
// alle levelx Fragen, die sich nicht in der kattalog_temp Tabelle befinden, und den Studenten noch nicht gestellt wurden, werden aus der Datenbank ausgelesen
$query_frage = "SELECT f.id_frage, f.frage FROM kattalog_fragen f LEFT JOIN kattalog_temp t ON f.id_frage = t.id_frage AND matrikelnummer=$matrikelnummer WHERE f.level='$level' AND t.id_frage IS NULL";
$result = mysql_query($query_frage) or die ("Fehlermeldung:<br>".mysql_error());
while($row = mysql_fetch_assoc($result)) {
// das array beinhaltet alle level1 Fragen, die noch nicht gestellt wurden.
array_push($fragen, $row['id_frage']);
}
// liefert die obersten Frage
$naechste_frage = array_shift($fragen);
// die oberste Frage + Matrikelnummer des Studenten wird in 'katalog_temp' gespeichert. Dadurch koennen wir jederzeit feststellen, welche Fragen einen Studenten bereits gestellt wurde.
frage_in_katalog_temp_eintragen($matrikelnummer, $naechste_frage);
// Diese Methode generiert eine HTML Seite, die die oberste Frage aus dem Stack (array) anzeigt.
$level="level".$level;
html_seite_erzeugen($naechste_frage, $level, $matrikelnummer);
}//Ende frage_und_antwort_generieren
//***********************************************
// Hier koennen sich die Studenten registrieren *
//***********************************************
if($_GET["action"] == 'registration') {
// Feldkontrolle - Sind alle Eingabefelder ausgefuellt worden ?!
if(htmlentities($_POST['matrikelnummer'])!="" && htmlentities($_POST['vname'])!="" && htmlentities($_POST['nname'])!="" && htmlentities($_POST['email'])!="" && htmlentities($_POST['passwort1'])!="" && htmlentities($_POST['passwort2'])!="") {
// Passwort Verschluesselung + Kontrolle
$verschluesseltes_passwort1 = md5($_POST['passwort1']);
$verschluesseltes_passwort2 = md5($_POST['passwort2']);
// Stimmt Passwort1 mit Passwort2 ueberein ?
if($verschluesseltes_passwort1 == $verschluesseltes_passwort2) {
// E-Mail Check
if(!email_check(htmlentities($_POST['email']))) {
// Datenbank Eintrag wird nach der positive Feldkontrolle ausgefuehrt.
$query = "INSERT INTO kattalog_student (
matrikelnummer,
vname,
nname,
email,
studiengang,
gruppe,
passwort
) VALUES (
'".$_POST['matrikelnummer']."',
'".$_POST['vname']."',
'".$_POST['nname']."',
'".$_POST['email']."',
'".$_POST['studiengang']."',
'".$_POST['gruppe']."',
'$verschluesseltes_passwort1'
)";
$result = mysql_query($query);// or die ("Fehlermeldung :<br>".mysql_error());
if($result) {
$ausgabe ="Anmeldung war erfolgreich.";
} else {
$ausgabe = "Die Matrikelnummer ".$_POST['matrikelnummer']." ist bereits registriert.";
}
} else {
$ausgabe ="Ungueltige E-Mail Adresse.";
}//Ende E-Mail Check
} else {
$ausgabe="Passwort stimmen nicht ueberein.";
}//Ende Passwort Verschluesselung + Kontrolle
} else {
$ausgabe ="Fuellen Sie bitte alle Eingabefelder aus.";
}//Ende Feldkontrolle
$inhalt = 'ausgabe.php';
} //Ende Registration
//********
// Login *
//********
else if($_GET["action"] == 'login') {
global $matrikelnummer;
$matrikelnummer = $_REQUEST['matrikelnummer'];
// Sessionvariable
$HTTP_SESSION_VARS["matrikelnummer"] = $matrikelnummer;
// Feldkontrolle
if(htmlentities($_POST['matrikelnummer'])!="" && htmlentities($_POST['passwort'])!="") {
// Ist der Eintrag in der DB vorhanden ?
$eintrag_vorhanden=false;
$matrikelnummer = $_POST['matrikelnummer'];
$verschluesseltes_passwort = md5($_POST['passwort']);
$query="SELECT * FROM kattalog_student";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
while($row = mysql_fetch_assoc($result)) {
if($matrikelnummer==$row['matrikelnummer'] && $verschluesseltes_passwort==$row['passwort']) {
$eintrag_vorhanden=true;
break;
}
}
if($eintrag_vorhanden) {
$inhalt="level_auswahl.php";
$menue="menue_intern.php";
} else {
$ausgabe="Falsche Zugangsdaten.";
$inhalt = 'ausgabe.php';
}
} else {
$ausgabe ="Fuellen Sie bitte alle Eingabefelder aus.";
$inhalt = 'ausgabe.php';
}//Ende else
}//Ende login
//*********************
// Passwort vergessen *
//*********************
else if($_GET["action"] == 'passwort_vergessen') {
if(htmlentities($_POST['matrikelnummer'])!="") {
$eintrag_vorhanden=false;
$query="SELECT * FROM kattalog_student";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
while($row = mysql_fetch_assoc($result)) {
if($_POST['matrikelnummer']==$row['matrikelnummer']) {
$eintrag_vorhanden=true;
break;
}
}
if($eintrag_vorhanden) {
$ausgabe ="Sie haben Post :o)";
} else {
$ausgabe ="Die Matrikelnummer ".$_POST['matrikelnummer']." ist nicht registriert.";
}
} else {
$ausgabe ="Geben Sie bitte Ihre Matrikelnummer ein.";
$inhalt = 'ausgabe.php';
}
$inhalt = 'ausgabe.php';
}//Ende Passwort vergessen
//**********************************************************
// Hier kann der Admin eine neue Frage + Antwort eintragen *
//**********************************************************
else if($_GET["action"] == 'frage_u_antwort_speichern') {
$id_frage_u_antwort = uniqid("");
// Frage wird in der Datenbank gespeichert.
$query_frage = "INSERT INTO kattalog_fragen (
id_frage,
level,
frage
) VALUES (
'$id_frage_u_antwort',
'".$_POST['level']."',
'".$_POST['frage']."'
)";
$result_frage = mysql_query($query_frage) or die ("Fehlermeldung :<br>".mysql_error());
// Antworten werden in der Datenbak gespeichert.
// Durch die for-Schleife werden vier verschiedene Antworten gespeichert.
for ($i=1; $i<=4; $i++) {
$query_antwort = "INSERT INTO kattalog_antworten (
id_frage,
wahrheit,
antwort
) VALUES (
'$id_frage_u_antwort',
'".$_POST['wahrheit'.$i]."',
'".$_POST['antwort'.$i]."'
)";
// Leere Antwort-Felder werden nicht in der Datenbank eingetragen.
if($_POST['antwort'.$i] == " ") {
} else {
$result_antwort = mysql_query($query_antwort) or die ("Fehlermeldung :<br>".mysql_error());
}
}//Ende for-Schleife
}//Ende frage_u_antwort_speichern
/* ***********************************************************
Hier werden die verschiedenen Level aufgerufen; Im zweten Durchlauf werden die markierten Antworten in der DB eingetragen.
************************************************************ */
else if ($_REQUEST["action"] == 'frage_anzeigen') {
if ($_REQUEST["level_auswahl"] == 'level1') {
$level = "1";
$menue = "menue_intern.php";
$matrikelnummer = $_SESSION['matrikelnummer'];
frage_und_antwort_generieren($level);
// Hier werden die Antworten der Studenten in der DB eingetragen.
// Wurde auf weiter Button gedrueckt ?!
if(isset($_REQUEST['anzahl_antworten'])) {
// $counter_intern, um festzustellen, ob der user auf weiter gedrueckt hat, ohne eine Antwort auszuwaehlen. In diesem Fall wird die leere Eingabe als falsche Antwort gewertet. $counter_intern entspricht Anzahl der Antworten. Falls ein checkbox markiert wird, wird $counter_minumiert minimiert.
$counter_intern = $_REQUEST['anzahl_antworten'];
// Kontrolliere alle Checkboxen
for($i=0; $i<=$_REQUEST['anzahl_antworten']-1; $i++) {
// Ist der Checkbox Nr.$i aktiviert ?
if(isset($_REQUEST['antwort'.$i])) {
// Falls Checkbox aktiviert wurde -> trage ein, dass der User sich fuer diese Antwort entschieden hat.
if($_REQUEST['antwort'.$i]=='on') {
// Alles was jetzt in 'Katalog_temp_antworten' Tabelle eingetragen wird, haelt der Student fuer die richtige Loesung
$query = "INSERT INTO kattalog_temp_antworten (
id_antwort,
matrikelnummer
) VALUES (
'".$_REQUEST['id_antwort'.$i]."',
'$matrikelnummer'
)";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
if($result) {
$counter_intern-=1;
}
}
}
}
echo "<br />counter_intern: ".$counter_intern."<br />";
echo "<br />anzahl antworten: ".$_REQUEST['anzahl_antworten']."<br />";
if($counter_intern == $_REQUEST['anzahl_antworten']) {
global $counter;
$counter++;
echo "<br />global counter: ".$counter."<br />";
}
}//Ende if(isset($_REQUEST['anzahl_antworten']))
/*
echo '<pre>';
print_r($_REQUEST);
echo '</pre>';
*/
}//Ende level1
else if ($_REQUEST["level_auswahl"] == 'level2') {
$level = "2";
frage_und_antwort_generieren($matrikelnummer, $level);
}//Ende level2
else if ($_REQUEST["level_auswahl"] == 'level3') {
$level = "3";
frage_und_antwort_generieren($matrikelnummer, $level);
}//Ende level3
else if ($_REQUEST["level_auswahl"] == 'random_level1') {
frage_und_antwort_generieren($matrikelnummer);
}//Ende random_level1
else if ($_REQUEST["level_auswahl"] == 'random_level2') {
frage_und_antwort_generieren($matrikelnummer);
}//Ende random_level2
else if ($_REQUEST["level_auswahl"] == 'random_level3') {
frage_und_antwort_generieren($matrikelnummer);
}//Ende random_level3
else if ($_REQUEST["level_auswahl"] == 'random_all') {
frage_und_antwort_generieren($matrikelnummer);
}//Ende random_all
}//Ende frage_anzeigen
// Hier werden die PHP/HTML Seiten geschaltet.
else if($_GET["action"] == 'menue_information') {
$inhalt = "information.php";
}
else if($_GET["action"] == 'menue_login') {
$inhalt = "login.php";
}
else if($_GET["action"] == 'menue_registration') {
$inhalt = "registration.php";
}
else if($_GET["action"] == 'menue_passwort_vergessen') {
$inhalt = "passwort_vergessen.php";
}
else if($_GET["action"] == 'menue_level_auswahl') {
$inhalt = "level_auswahl.php";
$menue = "menue_intern.php";
}
else if($_GET["action"] == 'logout') {
// Die bereits gestellten Fragen aus kattalog_temp werden entfernt
$query="DELETE FROM kattalog_temp WHERE matrikelnummer=$matrikelnummer";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
// Die bereits beantworteten Fragen aus kattalog_temp_antworten werden entfernt
$query="DELETE FROM kattalog_temp_antworten WHERE matrikelnummer=$matrikelnummer";
$result = mysql_query($query) or die ("Fehlermeldung :<br>".mysql_error());
// befreit alle Session-Variablen, die gegenwaertig registriert sind.
session_unset();
// loescht alle in Verbindung mit der aktuellen Session stehenden Daten.
session_destroy();
$ausgabe = "Sie wurden aus dem System ausgeloggt.";
$inhalt = "ausgabe.php";
$menue = "menue.php";
}
else {
}
?>
<html>
<head>
<TITLE>Computernetze - Fragekatalog</TITLE>
<LINK REL="SHORTCUT ICON" HREF="http://www.netperformance.de/favicon2.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="copyright" content="Aaron Kreis">
<style>
/* IE CSS */
@import url(ie.css);
/* FireFox CSS */
@import url(ff.css) screen;
</style>
</head>
<body bgcolor="#FFFFFF">
<div id="rahmen">
<!-- Menue links -->
<div id="menue"><?php include($menue); ?></div>
<!-- Inhalt der Seite -->
<?php
// var_dump($generierte_seite);
if(!$generierte_seite) {
echo "<div id='inhalt'>";
include($inhalt);
echo "</div>";
} else {
echo "<div id='inhalt'>";
echo $inhalt;
echo "</div>";
global $generierte_seite;
$generierte_seite = false;
}
?>
</div>
</body>
</html>
Wenn ich z.b. mein login-action in der Zeile 258 so verändere,
if(isset($_GET["login"])) {
...
}
funktioniert das Programm nicht mehr. Das Ganze sollte aber ohne isset funktionieren. Habe überall eine else if Abfrage und in der Zeile 594 eine leere else Bedingung.
Gruß und Dank im Voraus
Aaron
@Dennis Wronka:
Tolle Idee mein Quelltext direkt in das Forum zu posten. Jetzt sieht niemand mehr die Zeilennummerierung.
Zuletzt bearbeitet: