Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
problem Fatal error: Cannot redeclare class
#1
Witam serdecznie Smile

Otóż mam taki problem że wyświetla mi się błąd

Kod:
Fatal error: Cannot redeclare class InvalidArgumentException in E:\xampplite\htdocs\tomasz\KURSY\PHP\PHP_i_MySQL_APLIKACJE\rozdzial_20\errors.inc on line 10

serwer jest na localhoscie i tak się właśnie zastanawiam czy nie powinno się w jakiś sposób skonfigurować plik php.ini

dodam że przy includowaniu używam require_once('nazwa_pliku');

podwójnie zdeklarowanej klasy też nie mam

z góry dziękuję za odp Smile
Odpowiedz
#2
Taki sam problem miałem ostatnio ale miałem zadeklarowaną dwa razy tą samą klasę, więc sprawdz dokładnie jeszcze raz Wink I pokaż nam ten kod
[Obrazek: 2guxq1i.gif]
Odpowiedz
#3
Wydaje mi się że nie mam zadeklarowanej dwa razy tej samej klasy. Otóż jest to kod formularza w jednym pliku mam kod klasy
Kod:
<?php

require_once('dbinfo.inc');
require_once('errors.inc');


class UserManager
{

  public function isValidUserName($in_user_name)
   {

     if($in_user_name =='' or ereg('[^[:alnum:] _-]', $in_user_name)===TRUE)
      return FALSE;
      else
      return TRUE;
   }


  public function createAccount($in_uname,$in_pw,$in_fname,$in_email,$in_year,$in_month,$in_day)
   {

     if($in_pw =='' or $in_fname=='' or !$this->isValidUserName($in_uname))
      {
       throw new InvalidArgumentException();
      }






    $conn=$this->getConnection();

    try
    {
      $exists=False;
      $exists=$this->userNameExists($in_uname,$conn);


      if($exists===true)
       throw new UserAlreadyExistsException();


      $uname=$this->super_escape_string($in_uname,$conn);
      $fname=$this->super_escape_string($in_fname,$conn);
      $email=$this->super_escape_string($in_email,$conn);
      $pw = md5($in_pw);


      $qstr= <<<OEM
      INSERT INTO Users(user_name,full_name,user_email,birthdate,password) VALUES
                 ('$uname', '$fname','$email', '$in_year-$in_month-$inday','$pw')
OEM;



      $result=@$conn->query($qstr);

      if($result===FALSE)
       {
       throw new DatabaseErrorException($conn->error);
       }

      $user_id=$conn->insert_id;
    }


    catch(Exception $e)
     {
       if(isset($conn))
        $conn->close();
       throw $e;

     }

     $conn->close();
     return $user_id;

   }


  public function userNameExists($in_uname,$in_db_conn=NULL)
   {

     if($in_uname=='')
      {
      throw new InvalidArgumentException();
      }
     if($in_db_conn===NULL)
      $conn=$this->getConnection();
      else
      $conn=$in_db_conn;


      try
      {
       $name=$this->super_escape_string($in_uname,$conn);

       $qstr= <<<EOM

       SELECT user_name FROM Users WHERE user_name='$name'
EOM;

      $result=$conn->query($qstr);
       if($result ===FALSE)
       {
        throw new DatabaseErrorException($conn->error);
       }


        $user_exists=False;

        while(($row=@$result->fetch_assoc()) !== NULL )
         {
           if($row['user_name']==$in_uname )
           {
            $user_exists=TRUE;
            break;

           }


         }



      }
      catch(Exception $e)
       {
         if($in_db_conn===NULL and isset($conn))
         $conn->close();
         throw $e;


       }

      $result->close();
      if($in_db_conn===NULL)
      $conn->close();
      return $user_exists;
   }






























# PRIVATE FUNCTIONS

private function getConnection()
  {

    $conn= new mysqli(DB_SERVER,DB_USER,DB_PW,DB_DB);
    if(mysqli_connect_errno() != 0)
     {
      throw new DatabaseErrorException(mysqli_connect_error());
     }
    return $conn;


  }

private function super_escape_string($in_string,$in_conn,$in_removePct=False)
  {

    $str=$in_super_escape_string($in_string);
    if($in_reomve_Pct)
      $str=ereg_replace('([%;])','\\\1', $str);
    return $str;


  }



}






?>



a w innym tworzenie uzytkownika

Kod:
<?php


require_once('UserManager.inc');
require_once('errors.inc');

session_start();

$uname=isset($_POST['username']) ? $_POST['username']:'';
$pw1=isset($_POSt['password1']) ? $_POST['password1']:'';
$pw2=isset($_POST['password2']) ? $_POST['password2']:'';
$fname=isset($_POST['fullname']) ? $_POST['fullname']:'';
$email=isset($_POST['emailaddr']) ? $_POST['emailaddr']:'';
$year=isset($_POST['year']) ? intval($_POST['year']):0;
$month=isset($_POST['month']) ? intval($_POST['month']):0;
$day=isset($_POST['day']) ? intval($_POST['day']):0;



if($uname == '' or $fname == '' or $pw1 == '' or $pwd2 == '')
{
  throw new InvalidInputException();

}


$usermgr= new UserManager();
$result= $usermgr->isValidUserName($uname);

if($result !== TRUE)
  {
   throw new InvalidInputException();
  }
  
if($pw1!= $pw2)
  {
   throw new InvalidInputException();
  }


if(!checkdate($month,$day, $year))
  {
   throw new InvalidInputException();
  }


$usermgr->createAccount($uname,$pw1,$fname,$email,$year, $month,$day); // tworzy konto


header('Location: logowanie.php');








?>


no i do tego plik z klasami błędów

Kod:
<?php

class InvalidArgumentException extends Exception
{
  public function __construct()
  {
    parent::__construct('Wywołanie funkcji z nieprawidłowym parametrem');
  }
}

class UserAlreadyExistsException extends Exception
{
  public function __construct()
  {
    parent::__construct('Użytkownik o takiej nazwie już istnieje.');
  }
}

class NoSuchUserException extends Exception
{
  public function __construct()
  {
    parent::__construct('Nie ma takiego użytkownika w systemie');
  }
}

class InvalidLoginException extends Exception
{
  public function __construct()
  {
    parent::__construct('Przesłana hasła login/hasło jest nieprawidłowa.');
  }
}



class DatabaseErrorException extends Exception
{
  public function __construct($in_msg)
  {
    parent::__construct('Wystąpił błąd bazy danych: '
                        . $in_msg);
  }
}


class InvalidInputException extends Exception
{
  public function __construct()
  {
    parent::__construct('Treść formularza była nieprawidłowa');
  }
}



?>
Odpowiedz
#4
A pokaż 9, 10, 11 linie w errors.inc Wink
Odpowiedz
#5
errors.inc wygląda tak

Kod PHP:
<?php

class InvalidArgumentException extends Exception
{
  public function 
__construct()
  {
    
parent::__construct('Wywołanie funkcji z nieprawidłowym parametrem');
  }
}   
// tu gdzies sie zaczyna 9 10 linia 

class UserAlreadyExistsException extends Exception
{
  public function 
__construct()
  {
    
parent::__construct('Użytkownik o takiej nazwie już istnieje.');
  }
}

class 
NoSuchUserException extends Exception
{
  public function 
__construct()
  {
    
parent::__construct('Nie ma takiego użytkownika w systemie');
  }
}

class 
InvalidLoginException extends Exception
{
  public function 
__construct()
  {
    
parent::__construct('Przesłana hasła login/hasło jest nieprawidłowa.');
  }
}



class 
DatabaseErrorException extends Exception
{
  public function 
__construct($in_msg)
  {
    
parent::__construct('Wystąpił błąd bazy danych: '
                        
$in_msg);
  }
}


class 
InvalidInputException extends Exception
{
  public function 
__construct()
  {
    
parent::__construct('Treść formularza była nieprawidłowa');
  }
}



?>


chodzi mi bardziej o to czy ustawienia serwera mają coś do generowania tego typu błędów Smile pozdrawiam
Odpowiedz
#6
Wydaje mi się, że 2 razy includujesz errors.inc. Raz w kodzie klasy a drugi w miejscu gdzie tworzysz formularz. Chodzi o:
Kod:
require_once('errors.inc');
Odpowiedz
#7
w sumie racja Smile wykasowałem ale błąd dalej został dziś jeszcze zainstaluje osobno Apache mysql i php poprostu nie bawiąc się w żadne krasnale xamppy itp Smile pozdrawiam
Odpowiedz
#8
Ja tam polecam Ci WebServ ;] U mnie sprawuje się dobrze.
Odpowiedz
#9
Dzięki wielkie za pomoc Sajam no widzisz a u mnie czy to krasnal, xampp, webserv to zawsze z czymś miałem problem Smile dlatego dość już ich mam

3m się

dziękuję wszystkim udzielającym się pozdrawiam Smile
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [PHP]Internal Server Error 500 Avarth 5 4,927 23-04-2011, 23:21
Ostatni post: Avarth

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl