Funktion erlaubt kein return true;
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bleiben
check
code
datei
datensatz
datum
einbinden
email
fehler
funktion
index
kram
muster
problem
session
speichern
status
url
verwarnung
-
Hallo zusammen,
ich habe ein PHP-Script, was irgendwie ganz komisch ist:
function check_ver($ID) { [...] return ($count < 3); }
Anmerkung: $count ist immer anders
$ver = //check_ver($row['id']); if (mysql_num_rows($result)==1 AND $ver){
Sobald der return Wert true ist, kommt diese Meldung:
Fatal error: Cannot redeclare check_ver() (previously declared in /home/w[..]/home.con.php:4) in /home/w[..]/home.con.php on line 33
In Zeile 4 wird die funktion deklariert und in Zeile 33 mit } geschloßen.
Irgendwie blicke ich da nicht durch...
mfg,
askarian -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
askarian schrieb:
Zeig doch den gesamten Code her... so kann man sich nicht gerade viel vorstellen.
Fatal error: Cannot redeclare check_ver() (previously declared in /home/w[..]/home.con.php:4) in /home/w[..]/home.con.php on line 33
In Zeile 4 wird die funktion deklariert und in Zeile 33 mit } geschloßen. -
So weit ich mich nicht irre bedeutet die Fehlermeldung, dass du die Funktion zweimal deklariert (mit gleichem Namen) hast in deinem Code weswegen das Parsen abgebrochen wird.
Edit:
Du kannst das durch umbennen lösen oder durch include_once()
Beitrag zuletzt geändert: 25.7.2012 20:12:47 von batleth -
Ok, der gesammte Code:
<?php function check_ver($ID) { $sql = "SELECT playername FROM accounts WHERE id = '".$ID."' "; $result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); $user = $row['playername']; $sql2 = "SELECT SUM(`count`) AS ver FROM verwarnungen WHERE user= '".$user."' "; $result2 = mysql_query($sql2) OR die(mysql_error()); $row2 = mysql_fetch_assoc($result2); $count = 0; $count = $row2['ver']; return ($count < 3); } //GET $status=""; if ( !empty($_POST['user']) && !empty($_POST['pw']) /*AND !isset($_SESSION['vlogin'])*/ ) { if (SID != "") { // SID ungleich Leerstring $status = "Bitte schalte Cookies ein!"; }else { $muster="/^[a-zA-Z0-9-_.]{5,15}$/"; @$user = trim($_POST['user']); $pw = trim($_POST['pw']); if (preg_match($muster, $user) == 0) { $status = "Das ist kein gültiger Username. "; } if (preg_match($muster, $pw) == 0) { // Passwort-Check $status .= "Das ist kein gültiges Passwort."; } else { $pw = md5($pw); } if (empty($status)) { // Falls der Nickname und das Passwort Übereinstimmen.. $sql = "SELECT id FROM accounts WHERE playername = '".mysql_real_escape_string($user)."' AND password = '".$pw."' "; $result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>"); // wird die ID des Users geholt und der User damit eingeloggt $row = mysql_fetch_assoc($result); //Verwarnungen? $ver = check_ver($row['id']); // Prüft, ob wirklich genau ein Datensatz gefunden wurde if (mysql_num_rows($result)==1 AND $ver){ doLogin($row['id'], false); }elseif(!$ver){ $CONTENT = show_l("<font color='red'>Du wurdest nicht gesperrt! - <a href='http://askarian.net'>Klicke hier, um zum normalen askarian zu kommen</a></font></br>"); } else{ $CONTENT = show_l("<font color='red'>Username oder Passwort fehlerhaft!!!</font></br>"); } }else{ $CONTENT = show_l("<font color='red'>".$status."</font></br>"); } } }else{ $CONTENT = show_l(""); } /*if(is_array($GET) AND $GET[1]=="send" AND isset($_POST['email']) AND isset($_POST['password'])){ $sql = "SELECT ID FROM User WHERE email = '".mysql_real_escape_string(trim($_POST['email']))."' AND Passwort = '".md5(trim($_POST['password']))."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); // wird die ID des Users geholt und der User damit eingeloggt $row = mysql_fetch_assoc($result); // Prüft, ob wirklich genau ein Datensatz gefunden wurde if (mysql_num_rows($result)==1){ doLogin($row['ID'], isset($_POST['Autologin'])); include "workspace.con.php"; } else{ $CONTENT = show_l("<font color='red'>Email oder Passwort fehlerhaft!!!</font></br>"); } }else{ $CONTENT = show_l(""); }*/ function show_l($error){ return <<<CCC Hier wäre das layout CCC; } ?>
Nur leicht gekürzt...
Beitrag zuletzt geändert: 26.7.2012 17:41:22 von askarian -
Ok...
<?php function check_ver($ID) { $sql = "SELECT playername FROM accounts WHERE id = '".$ID."' "; $result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); $user = $row['playername']; $sql2 = "SELECT SUM(`count`) AS ver FROM verwarnungen WHERE user= '".$user."' "; $result2 = mysql_query($sql2) OR die(mysql_error()); $row2 = mysql_fetch_assoc($result2); $count = 0; $count = $row2['ver']; return ($count < 3); } function doLogin($ID, $autologin = false) { // .. indem die aktuelle Session ID in der Datenbank gespeichert wird $sql = "UPDATE accounts SET sessionID = '".mysql_real_escape_string(session_id())."', autologin = NULL WHERE id = '".$ID."' "; mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error()); // Wenn 'eingeloggt bleiben' aktiviert wurde // Daten des Users in der Session speichern $sql = "SELECT playername FROM accounts WHERE id = '".$ID."' "; $result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); $_SESSION['vUserID'] = $ID; $_SESSION['vlogin'] = true; $_SESSION['vuser']=$row['playername']; } //GET $status=""; if ( !empty($_POST['user']) && !empty($_POST['pw']) /*AND !isset($_SESSION['vlogin'])*/ ) { if (SID != "") { // SID ungleich Leerstring $status = "Bitte schalte Cookies ein!"; }else { $muster="/^[a-zA-Z0-9-_.]{5,15}$/"; @$user = trim($_POST['user']); $pw = trim($_POST['pw']); if (preg_match($muster, $user) == 0) { $status = "Das ist kein gültiger Username. "; } if (preg_match($muster, $pw) == 0) { // Passwort-Check $status .= "Das ist kein gültiges Passwort."; } else { $pw = md5($pw); } if (empty($status)) { // Falls der Nickname und das Passwort Übereinstimmen.. $sql = "SELECT id FROM accounts WHERE playername = '".mysql_real_escape_string($user)."' AND password = '".$pw."' "; $result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>"); // wird die ID des Users geholt und der User damit eingeloggt $row = mysql_fetch_assoc($result); //Verwarnungen? $ver = check_ver($row['id']); // Prüft, ob wirklich genau ein Datensatz gefunden wurde if (mysql_num_rows($result)==1 AND $ver){ doLogin($row['id'], false); }elseif(!$ver){ $CONTENT = show_l("<font color='red'>Du wurdest nicht gesperrt! - <a href='http://askarian.net'>Klicke hier, um zum normalen askarian zu kommen</a></font></br>"); } else{ $CONTENT = show_l("<font color='red'>Username oder Passwort fehlerhaft!!!</font></br>"); } }else{ $CONTENT = show_l("<font color='red'>".$status."</font></br>"); } } }else{ $CONTENT = show_l(""); } /*if(is_array($GET) AND $GET[1]=="send" AND isset($_POST['email']) AND isset($_POST['password'])){ $sql = "SELECT ID FROM User WHERE email = '".mysql_real_escape_string(trim($_POST['email']))."' AND Passwort = '".md5(trim($_POST['password']))."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); // wird die ID des Users geholt und der User damit eingeloggt $row = mysql_fetch_assoc($result); // Prüft, ob wirklich genau ein Datensatz gefunden wurde if (mysql_num_rows($result)==1){ doLogin($row['ID'], isset($_POST['Autologin'])); include "workspace.con.php"; } else{ $CONTENT = show_l("<font color='red'>Email oder Passwort fehlerhaft!!!</font></br>"); } }else{ $CONTENT = show_l(""); }*/ ?>
-
$result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error());
Da fehlt auf jeden Fall schonmal ein e.
Das ist so der gröbste Fehler, den ich nach kurzem Überfliegen festgestellt habe. ;)
Aber die Fehlermeldung liest sich mehr so, als würdest du die Datei aus unerfindlichen Gründen mehrfach deklarieren oder einbinden, so wie es ein Vorposter bereits gesagt hat. Hast du das überprüft?
Beitrag zuletzt geändert: 26.7.2012 18:03:02 von adrians -
sebulon schrieb:
kram mal bitte die index.php aus, oder wo du den aufruf machst.
da suchst du mal deine includes auf
/home.con.php
und machst somit das, was dir der batleth vorgeschlagen hat: include once
funktionen überladen geht in PHP nicht...
Hm...jetzt klappt es...Es lag daran, dass home.con.php auch die Startseite war...
Danke allerseits -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage