Problem mit meinem Login Script

blackbox100

Grünschnabel
Guten Abend

Bin ein neuling in sachen php und versuche mich gerade an einem Login Script da ich das für mich jetzt am einfachsten fand hab das script jetzt soweit fertig wollte es nun testen und da taucht dan der fehler auf Fatal error: Call to undefined method User::login() in /users/blackbox100/www/cms/admin/index.php on line 18

hier mal der php code der index.php

PHP:
<?PHP
  session_start();
  include("../system/mysql.php");
  include("../system/settings.php");
  include("../system/classes/user.php");
  include("../system/filterfilename.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
  <head>
    <title>Admin-Bereich</title>
  </head>
  <body>
      <?PHP
        $user = new User();
        if($_POST['user']){
          if($user->login($_POST['user'],$_POST['password'])){
            $_SESSION['username'] = $_POST['user'];
          }
          else{
            echo "<p>Login Fehlgeschlagen!</p>";
            include('includes/login.php');
          }
        }
    if(isset($_SESSION['username'])){
          include('includes/menue.php');
          if($_GET['page']){
            include(filterfilename("includes/".$_GET['page']));
          }
    }
    else{
          include('includes/login.php');
    }
      ?>
  </body>
</html>

hier mal der link fals ihr es testen wollt benutzer ist test und pw test

http://blackbox100.square7.ch/cms/admin/index.php

falls ihr noch nen code braucht sagt bescheit
 
Wie sieht die Klasse User denn aus?

Die Fehlermeldung besagt, dass es in der Klasse User keine Methode namens login gibt.
 
Danke für die schnelle Antwort die Klasse User sieht im moment so aus

PHP:
<?PHP
class User{
  var $name;

  function checkPassword($password){
    global $dbpraefix;
    $password = mysql_real_escape_string(trim($password));
    $name = mysql_real_escape_string(trim($this->name));
    $res = mysql_query("SELECT COUNT(*) FROM ".$dbpraefix."user WHERE 
                        name='".$name."' AND password = '".md5($password)."'");
    $row = mysql_fetch_row($res);
    return $row[0] == 1;
  }
}

function login($name,$password){
    global $dbpraefix;
    $password = mysql_real_escape_string(trim($password));
    $this->name = mysql_real_escape_string(trim($name));
    if($this->checkPassword($password)){
      return true;
    }
    else{
      return false;
    }
  }


?>
 
Ich hab die Klasse mal ein wenig umgeschrieben und "effektiver" gestaltet. Unter anderem durch Einsatz von PHP5 Methodik.

PHP:
<?php

class User
{
	private $name;
	private $password;
	private $prefix;
	
	public function __construct()
	{
		global $dbpraefix;
		$this->prefix = $dbpraefix;
	}
	
	private function checkPassword($password)
	{
		
		$res = mysql_query("SELECT 
								id 
							FROM 
								{$this->prefix}user 
							WHERE 
								name= '{$this->name}' 
								AND password = '{$this->password}'
							");
		return ( mysql_num_rows($res) > 0 ? true : false );
	}

	public function login($name, $password)
	{
		$this->name = mysql_real_escape_string(trim($name));
		$this->password = md5($password);
		
		return $this->checkPassword();
	}
}

?>

Der Fehler war, dass du die Klasse geschlossen hast, bevor du die Login Methode definiert hast.

Du solltest dich mehr mit den objektorientierten Features von PHP5 vertraut machen:

http://de.php.net/manual/de/language.oop5.php

Und achte bitte noch ein wenig mehr auf deine Groß- und Kleinschreibung.
 

Neue Beiträge

Zurück