[PHP] Fatal error: Call to undefined function funk()

  • 8 Odpowiedzi
  • 916 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline kotex

  • **
  • 156
  • Płeć: Mężczyzna
  • Sprzęt: Nokia 808
[PHP] Fatal error: Call to undefined function funk()
« dnia: Marzec 12, 2009, 11:49:44 »
Problem jak w temacie. Podczas odświeżania strony wywala error:

"Fatal error: Call to undefined function funk() in C:\xampp\htdocs\pdf\index.php on line 70"


KOD:
64         <?php
65            if ($_COOKIE['logowanie'] == 'true')
66            {
67            $q=1;
68            $l = 0;
69            $a = 0;
70            funk('C:\xampp\htdocs\pdf\inbox');
71            $sciezka="c:\\xampp\\htdocs\\pdf\\inbox\\";
72            function funk($path)
73            {

Problem pojawił się po wstawieniu warunku "if ($_COOKIE['logowanie'] == 'true')". jak go wywale to wszystko przechodzi ładnie. Gwint w tym że muszę mieć tam ten warunek.

Pomoże ktoś ? Jestem początkującym jeśli chodzi o php więc proszę o wyrozumiałość.
Siemens C25 -> Siemens M35i -> Samsung X100 -> Nokia 7650 -> Motorolla L7 -> SE V630@K550 -> Nokia 6300 -> Nokia E62 -> Nokia 6301 -> E-TEN X800 -> Nokia E71 -> HTC HD2 + Nokia 6700 -> BB9780 -> Nokia 808

*

Offline wpmike

  • *****
  • 1169
  • Płeć: Mężczyzna
  • Sprzęt: Sony Xperia Z
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #1 dnia: Marzec 12, 2009, 13:51:17 »
Jaka wersja PHP, jaki system, co usiłujesz uczynić?

*

Offline kotex

  • **
  • 156
  • Płeć: Mężczyzna
  • Sprzęt: Nokia 808
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #2 dnia: Marzec 12, 2009, 13:58:38 »
To jest mój zrzut z phpinfo();

System    Windows NT COMPDSK004 5.1 build 2600
Build Date    Dec 8 2008 19:30:48
Configure Command    cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--with-snapshot-template=d:\php-sdk\snap_5_2\vc6\x86\template" "--with-php-build=d:\php-sdk\snap_5_2\vc6\x86\php_build" "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared"

Server API    Apache 2.0 Handler
Virtual Directory Support    enabled
Configuration File (php.ini) Path    C:\WINDOWS
Loaded Configuration File    C:\xampp\apache\bin\php.ini
Scan this dir for additional .ini files    (none)
additional .ini files parsed    (none)
PHP API    20041225
PHP Extension    20060613
Zend Extension    220060519
Debug Build    no
Thread Safety    enabled
Zend Memory Manager    enabled
IPv6 Support    enabled
Registered PHP Streams    php, file, data, http, ftp, compress.zlib, zip
Registered Stream Socket Transports    tcp, udp
Registered Stream Filters    convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, zlib.*


skrypt ma najpierw sprawdzić czy logowanie się powiodło "true", jeśli tak to ma wykonać serie poszczególnych procedur które są bankowo dobre. w razie nie powodzenia żadnej procedury nie wykona in na ekranie pozostaje praktycznie tylko okienko logowania. jak już wspomniałem, jak wywalę warunek if to wszystko gra tylko gwint w tym ze on tam musi być żeby sprawdzić czy użytkownik się zalogował czy nie
Siemens C25 -> Siemens M35i -> Samsung X100 -> Nokia 7650 -> Motorolla L7 -> SE V630@K550 -> Nokia 6300 -> Nokia E62 -> Nokia 6301 -> E-TEN X800 -> Nokia E71 -> HTC HD2 + Nokia 6700 -> BB9780 -> Nokia 808

*

Offline Bat.

  • Homofob i seksista
  • ******
  • 3315
  • Płeć: Mężczyzna
  • Skąd: Śląsk
    • Deskorolka Underflip
  • Sprzęt: Dell Axim X51v | Blackberry 8110, 9700, PlayBook
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #3 dnia: Marzec 12, 2009, 18:34:28 »
A co to za bezsensowne planowanie skryptu, żeby funkcję pchać do warunku? Stwórz ją przed wykonaniem warunku lub po (też powinno działać), najlepiej w jakimś głównym pliku. Sprawdź wszystkie klamry i zapisuj je czytelnie - zapisywanie w osobnych liniach bez tabulatorów w dalszym kodzie nie jest kól ;)

*

Offline kotex

  • **
  • 156
  • Płeć: Mężczyzna
  • Sprzęt: Nokia 808
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #4 dnia: Marzec 12, 2009, 18:50:55 »
No własnie kod jest elegancko zapisywany w tabulatorach. wszystko na notepad++, sprawdzone nie brakuje żadnych klamr. Testowałem już warunek w funkcji i w tym przypadku coś innego nie gra  :-|

pozatym error mowi o czym innym:
Call to undefined function - odwolanie do niezdefiniowanej funkcji (gdzie jest zdefiniowana) ??
« Ostatnia zmiana: Marzec 12, 2009, 18:53:07 wysłana przez kotex »
Siemens C25 -> Siemens M35i -> Samsung X100 -> Nokia 7650 -> Motorolla L7 -> SE V630@K550 -> Nokia 6300 -> Nokia E62 -> Nokia 6301 -> E-TEN X800 -> Nokia E71 -> HTC HD2 + Nokia 6700 -> BB9780 -> Nokia 808

*

Offline BigBadBlackDog

  • **
  • 151
  • Płeć: Mężczyzna
    • Moja mała mieścinka :)
  • Sprzęt: i780, Motorola Pro+
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #5 dnia: Marzec 12, 2009, 18:53:53 »
tu ma pierwszy rzut oka widać podstawowy błąd :chociaż nie wiem szczerze, czy php jest na to czuły :)

w 70 lini wywołujesz funkcje:

70   funk('C:\xampp\htdocs\pdf\inbox');
która zadeklarowana jest dopiero w lini 72:

72            function funk($path)
73            {

a jako że php czyta sobie skrypcik od góry do dołu to w momencie wywołania funkcji funk() jest do dla niego funkcja niezdefiniowana (przynajmniej tak na pierwszy rzut oka)

ale druga podstawowa sprawa to po co takie babranie zamiast skorzystać z mechanizmu sesji ??

<?php
session_start
(); //uruchomienie sesji

if (dobry user)
{
      
$_SESSION['zalogowany'] = 1;  //jeżeli na przykład user podał dobre hasełko itd to ustawiasz zmienną sesyjną  zalogowany na 1
      
$_SESSION['uprawnienia'] = 'admin'//na przykład ustawiasz mu uprawnienia admina :)
}

?>


potem każdy pliczek zaczynasz od session_start() w pierwszej linijce i sobie sprawdzasz tylko te zmienne sesyjne czyli na przykład:

<?php 
session_start
();  //odpalenie sesji w pierwszej linijce

//jeżeli zmienna sesyjna zalogowany ustawiona i jej wartość jest odpowiednia
if( (isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany'] == 1))
{
       
odpalenie instrukcji dla użytkownika zalogowanego
}
else
{
      echo 
'wypad, jesteś nie zalogowany :)';
      exit();  
//nie przetwarzaj dalej skryptu :)
}
?>

wylogowujesz niszcząc sesje  za pomocą funkcji session_destroy();  :)


aha i definicje funkcji jakich używasz wrzuć sobie do osobnego pliku a potem używając np. include_once('nazwa pliku') dołączaj je do skryptów w których będziesz używał tych funkcji :)
« Ostatnia zmiana: Marzec 12, 2009, 18:58:36 wysłana przez BigBadBlackDog »
Nie puszczone bąki unoszą się do mózgu, stąd biorą się posrane pomysły

*

Offline kotex

  • **
  • 156
  • Płeć: Mężczyzna
  • Sprzęt: Nokia 808
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #6 dnia: Marzec 12, 2009, 18:57:26 »
właśnie czytałem o sesjach ale na początek chciałem to "prostacko" zrobić. Jak już mówiłem jestem początkującym z php.
Siemens C25 -> Siemens M35i -> Samsung X100 -> Nokia 7650 -> Motorolla L7 -> SE V630@K550 -> Nokia 6300 -> Nokia E62 -> Nokia 6301 -> E-TEN X800 -> Nokia E71 -> HTC HD2 + Nokia 6700 -> BB9780 -> Nokia 808

*

Offline BigBadBlackDog

  • **
  • 151
  • Płeć: Mężczyzna
    • Moja mała mieścinka :)
  • Sprzęt: i780, Motorola Pro+
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #7 dnia: Marzec 12, 2009, 19:01:38 »
wiesz, tylko że obsługa sesji w takim najprostszym przypadku jest tez prostacka jak widzisz i tak między bogiem  a prawdą w domyślnej konfiguracji PHP też opiera się na ciasteczkach, tylko że to co ty robisz ręcznie to mechanizm sesji robi za Ciebie - nie ma co wyważać otwartych drzwi :)

a tą deklaracjie funkcji funk( ) z 72 lini przenieś to pliczku np. functions.php i potem zaraz na początku skryptu go zaincluduj :)


Nie puszczone bąki unoszą się do mózgu, stąd biorą się posrane pomysły

*

Offline kotex

  • **
  • 156
  • Płeć: Mężczyzna
  • Sprzęt: Nokia 808
Odp: [PHP] Fatal error: Call to undefined function funk()
« Odpowiedź #8 dnia: Marzec 13, 2009, 12:17:50 »
zastosowałem sesje. teraz działa wszystko elegancko. dzięki  :D
Siemens C25 -> Siemens M35i -> Samsung X100 -> Nokia 7650 -> Motorolla L7 -> SE V630@K550 -> Nokia 6300 -> Nokia E62 -> Nokia 6301 -> E-TEN X800 -> Nokia E71 -> HTC HD2 + Nokia 6700 -> BB9780 -> Nokia 808