Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje, GET i Funkcje
Forum PHP.pl > Forum > PHP
marcindvd
Witam
Pisze stronę która zbiera informacje i zapisuje je do bazy ale natknąłem się na problem.

Do weryfikacji loginu i hasła używam jak to zwykle SESJI.
Po pozytywnej weryfikacji konta robię header na nowa stronkę i na tej stronie dokonuje się weryfikacja zmiennych sesyjnych oraz są zapisane funkcje do obsługi tej strony:

  1. <?php
  2.  
  3. print &#092;"<a href=index.php?act=add>Dodaj nowe zamowienie</a>\";
  4.  
  5. switch ($act){
  6. case &#092;"\": k_lista(); break;
  7. case &#092;"add\": add_doc(); break;
  8. case &#092;"skasuj\": $num=$_GET[numer]; skasuj($num); break;
  9. }
  10.  
  11. function k_lista()
  12. {
  13. i tu jest zdefuiniowana poprawnie ta funkcja
  14. }
  15. function add_doc{
  16. kolejna funkcja
  17. }
  18. ?>


i teraz jest tak ze jak jest ustawiona sesja to w przypadku gdy klikam na linka to wyskakuje komunikat: Fatal error: Call to undefined function: add() ......

Jak chodzi bez sesji to dziala bez problemu.

Nie jestem profesionalista w tym co robie ale nie wiem gdzie jest blad. Szukalem po mojej blibliii do PHPa materialow na ten temat ale niestey niedoczytalem sie tego

Bardzo prosze o pomoc
Pozdrawiam i z gory dziekue za okazana smile.gif))
sf
1) nie widze tu zwiazku z sesja... kod na to nie wskazuje
2) zla skladnia html... brak cudzyslowia
3) co to jest $act ? bo jak to jest przez link dawane to brakuje informacji, ze robisz $act=$_GET['act'];
4) nie napisales, w ktorej linijce wyskakuje ten blad, bo tam pisze w Twoim bledzie act(), a z tego co widze to masz przy 'add' add_doc();
silent
Rozwiązanie jest proste:
  1. <?php
  2. //masz teraz tak:
  3. function add_doc{
  4. kolejna funkcja
  5. }
  6. ?>

  1. <?php
  2. //a powinno być:
  3. function add_doc(){ // nawias!!
  4. kolejna funkcja
  5. }
  6. ?>
marcindvd
Dobra to pokaze caly kod, bo wczoraj go troche okroilem bo myslalem ze nie potrzebne sa wszystkie wszystkie informacje ktore dzialaja smile.gif)

  1. <?php
  2.  
  3. if (($zmienna=ok) and ($typ==1) and (isset($log))){
  4.  
  5. print &#092;"<br><b>Lista Dla kilenta</b><br><br>
  6. <a href=index.php?str=klient>Pokaz liste</a><br>
  7. <a href=index.php?str=klient&act=add>Dodaj nowe zamowienie</a><br>&#092;";
  8.  
  9. $act = $_GET['act'];
  10. switch ($act){
  11. case &#092;"\": k_lista(); break;
  12. case &#092;"add\": add_doc(); break;
  13. case &#092;"wpis\": doc_dodaj(); break;
  14. case &#092;"skasuj\": $num=$_GET[numer]; skasuj($num); break;
  15. }
  16.  
  17. function k_lista()
  18. {
  19.  // nio i tu sie wykonuje funkcja
  20. }
  21.  
  22. function doc_dodaj(){
  23.  // a tutaj kolejna jest
  24. }
  25.  
  26.  
  27. ?>


wywoljac dokument z headerem index.php?str=klient wywala mi sie blad
-- Call to undefined function: k_lista() in c:\usr\apache\httpd\html\strony\klient.php on line 12 --

Klikając tez na link z headerem index.php?str=klient&act=add robi sie tak samo tylko blad jest linijkę dalej

A najciekawsze w tym wszysrtkim jest to ze jak wylacze na samej gorze Linijka 3 i 4 sprawdzanie zmiennych sesyjnych to jest wszystko dobrze i ladnie chodzi smile.gif)) heheh

Pozdrawiam
shpyo
  1. <?php
  2.  
  3. function k_lista()
  4. {
  5.  // nio i tu sie wykonuje funkcja
  6. }
  7.  
  8. function doc_dodaj()
  9. {
  10.  // a tutaj kolejna jest
  11. }
  12.  
  13.  
  14. if ( ($zmienna=ok) and ($typ==1) and (isset($log)) )
  15. {
  16.  
  17. print &#092;"<br><b>Lista Dla kilenta</b><br><br>
  18. <a href=index.php?str=klient>Pokaz liste</a><br>
  19. <a href=index.php?str=klient&act=add>Dodaj nowe zamowienie</a><br>&#092;";
  20.  
  21. $act = $_GET['act'];
  22. switch ($act){
  23. case &#092;"\": k_lista(); break;
  24. case &#092;"add\": add_doc(); break;
  25. case &#092;"wpis\": doc_dodaj(); break;
  26. case &#092;"skasuj\": $num=$_GET[numer]; skasuj($num); break;
  27. }
  28. } // nie zamknąłeś IF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  29. ?>


To tyle jak dla mnie. A ha i jeszcze jedno:
- funkcje daj na sam początek kodu. Jak on ma wykonać funkcję jak jest ona wywoływana przed zadeklarowaniem funkcji? tongue.gif
Naucz się czytelnie pisać kod - to naprawdę ułatwia życie biggrin.gif
Vengeance
juz ci napisali. zla masz skladnie definicji funkcji.
silent
php kurat jest takie magiczne, że można funkcje wywoływać przed ich deklaracją. Ja np. wszystkie funkcje daję sobie na koniec kodu.
militis
  1. <?php
  2.  
  3.  
  4. (...)
  5. if ( ($zmienna=ok) and ($typ==1) and (isset($log)) )
  6. {
  7. (...)
  8.  
  9. ?>


$zmienna=ok jest specjalnie tak? czy moze miales na mysli $zmienna=='ok' ?
marcindvd
Ok dziekuje bardzo poradziłem sobie i jak to mowiliscie deklaracja funkcji musi byc przed ich wywołaniem. Nie wiem dalczego tak jest bo wczesniej nie bylo tak funkcje deklarowalem na poczatku ale jak wlaczylem sesje to juz to nie dzialalo poprawnie smile.gif))

Bardzo dziekuje za okazana pomoc

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.