kostenloser Webspace werbefrei: lima-city


Funktion erlaubt kein return true;

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    askarian schrieb:

    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.
    Zeig doch den gesamten Code her... so kann man sich nicht gerade viel vorstellen.
  4. 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
  5. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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&uuml;ltiger Username. ";
        }
        if (preg_match($muster, $pw) == 0) { // Passwort-Check
          $status .= "Das ist kein g&uuml;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
  6. askarian schrieb:
    ... Nur leicht gekürzt ...
    das kann ein problem bedeuten ... die gekürzte version hat keinen fehler ;)
  7. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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&uuml;ltiger Username. ";
        }
        if (preg_match($muster, $pw) == 0) { // Passwort-Check
          $status .= "Das ist kein g&uuml;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("");
    }*/
    
    ?>
  8. $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
  9. 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...
  10. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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:wall::wall::wall::wall::wall::wall::wall::wall::wall:
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!