Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Cannot redeclare
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam. Mam pewien problem. Wywołuję funkcję w pliku php, jednak dostaję taki oto komunikat.

Kod
Cannot redeclare logadm() (previously declared in /home/domena/domainsdomena.pl/public_html/login.php:59) in /home/domena/domains/domena.pl/public_html/login.php


Czym może być to spowodowane?
nospor
Ty nie wywolujesz a ponownie ją deklarujesz. Nie mozna kilkukrotnie deklarować funkcji o tej samej nazwie.

Pewnie includujesz kilka razy ten sam plik z funkcją
Albo w petli deklarujesz tę samą funkcje non stop
djgarsi
Oto i mój plik:

  1. <?php
  2. include('db_connect.php');
  3.  
  4. if(isset($_POST['logadm'])) {
  5. $login = htmlspecialchars($_POST['loginadm']);
  6. $passwordzik = htmlspecialchars(md5($_POST['passadm']));
  7.  
  8. if(strstr($login, "'") == true || strstr($login, "table") == true || strstr($login, "database") == true)
  9. {
  10. header('Location: '.$_SERVER['HTTP_REFERER']);
  11. }
  12. else {
  13. $_POST['loginadm'] = str_replace( "'", "", $_POST['loginadm']);
  14. $_POST['loginadm'] = str_replace( "DELETE", "", $_POST['loginadm']);
  15. $_POST['loginadm'] = str_replace( "DROP", "", $_POST['loginadm']);
  16. $_POST['loginadm'] = str_replace( "UPDATE", "", $_POST['loginadm']);
  17. $_POST['loginadm'] = str_replace( "SELECT", "", $_POST['loginadm']);
  18. $login = htmlspecialchars($_POST['loginadm']);
  19. $passwordzik = htmlspecialchars(md5($_POST['passadm']));
  20.  
  21. $dane = @mysql_query('SELECT login, password FROM tabela WHERE login = "'.$login.'" AND password= "'.$passwordzik.'"') or die(mysql_error());
  22. }
  23. if(mysql_num_rows($dane) == 1) {
  24. $_SESSION['logadm'] = 'ok';
  25. $_SESSION['nick2'] = $login;
  26. $Query='SELECT * FROM users WHERE login="'.$_SESSION['nick2'].'"';
  27. $result = mysql_query($Query);
  28. while ($row = mysql_fetch_array($result))
  29. {
  30. $_SESSION['nick'] = $row["login"];
  31. $_SESSION['dostep'] = $row["dostep"];
  32. }
  33. }
  34. else {
  35. $_SESSION['logadm'] = '<P class=blad>'.$l_bllu.'';
  36. }
  37. unset($_POST['logadm']);
  38. }
  39. if(isset($_POST['unlogadm'])) {
  40. unset($_SESSION['nick']);
  41. unset($_SESSION['dostep']);
  42. unset($_SESSION['logadm']);
  43. unset($_POST['unloaddm']);
  44. }
  45.  
  46. function logadm() {
  47. if($_SESSION['logadm'] == 'ok') {
  48. echo'<form action="'.getenv(REQUEST_URI).'" method="post">';
  49. echo'<input type="submit" name="unlogadm" value="Wyloguj '.$_SESSION['nick'].'" class="button" />';
  50. echo'</form> </center>';
  51. }
  52. else
  53. {
  54. $string = '<form action="'.getenv(REQUEST_URI).'" method="post">';
  55. if(isset($_SESSION['logadm']))
  56. $string .= '<center>'.$_SESSION['logadm'].'';
  57. $string .= 'Login: <input type="text" autocomplete="off" name="loginadm" style="width: 100px" class="textbox"/>';
  58. $string .= ' Haslo: <input type="password" autocomplete="off" name="passadm" style="width: 100px" class="textbox"/>';
  59. $string .='  <input type="submit" name="logadm" value="Login" class="button"/><br>';
  60. $string .= '<a href=/register.html>Zarejestruj się</a>    <a href=/lostpassword.php>Przypomnij hasło</a></center>';
  61. $string .= '</form>';
  62. }
  63. } //w tej linii pokazuje błąd
  64. return $string;
  65. ?>
konole
Czekaj, czekaj.

Na początku pytasz się o to, czy istnieje $_POST['logadm'], a potem w tym samym bloku dołączasz funkcję z tabelką logowania. A co, jeśli nie istnieje $_POST['logadm']? W jaki sposób chcesz dołączyć funkcję? Jeszcze raz wstawiasz gdzieś jej kod (else)?

I to
Kod
$_POST['loginadm'] = str_replace( "'", "", $_POST['loginadm']);
        $_POST['loginadm'] = str_replace( "DELETE", "", $_POST['loginadm']);
        $_POST['loginadm'] = str_replace( "DROP", "", $_POST['loginadm']);
        $_POST['loginadm'] = str_replace( "UPDATE", "", $_POST['loginadm']);
        $_POST['loginadm'] = str_replace( "SELECT", "", $_POST['loginadm']);
        $login = htmlspecialchars($_POST['loginadm']);
        $passwordzik = htmlspecialchars(md5($_POST['passadm']));


Możesz równie zastąpić
Kod
$login = mysql_real_escape_string($_POST['loginadm']);
$passwordzik = mysql_real_escape_string($_POST['passadm']);

greycoffey
Masz podany bład jak na tacy, przetłumacz sobie (jak nie znasz angielskiego to masz translatroy) i rozwiąż problem.
djgarsi
Cytat(greycoffey @ 9.03.2011, 16:09:47 ) *
Masz podany bład jak na tacy, przetłumacz sobie (jak nie znasz angielskiego to masz translatroy) i rozwiąż problem.


No fajnie, tylko że do tej pory działało. Przestało gdy dopisałem linijki ze str_replace.
greycoffey
Redeklarujesz funkcje logadm(). Daj cały kod, a nie tylko ten plik, jest coś po tym, lub przed tym jeszcze? Btw. czy domainsdomena.pl nie powinno być domains/domena.pl - to twój błąd, czy taka jest prawdziwa treść zwracana przez praser?

Do tego return $string; powinno być w funkcji, nie poza nią.
djgarsi
domains/domena.pl - mój błąd

podałem cały plik login.php
Fifi209
Cytat(greycoffey @ 9.03.2011, 16:34:23 ) *
Do tego return $string; powinno być w funkcji, nie poza nią.

Nie zawsze, swego czasu (póki nie używano Registry) w config wyglądał tak:
  1. $config[jakisklucz] = 'jakas_wartosc';
  2.  
  3. return $config;

Co dawało możliwość globalnego dostępu do $config

O ile mnie pamięć nie myli.
djgarsi
Niestety, przestawienie return nic nie daje.
Jakieś inne propozycje?
greycoffey
Gdzie wykorzystujesz ten plik? Może go inkludujesz potem, bo on sam jest niezbyt przyjazny?
djgarsi
greycoffey, masz rację. includowałem plik w innym miejscu. i chyba to było to bo inaczej go wywołałem i działa:)
Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.