Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja w funkcji :?
Apo
post 14.11.2005, 15:16:10
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


Witam
Napisałem sobie funkcje panelu który pojawia się obok wpisu do księgi gości po zalogowaniu jako admin. I w tej funkcji mam jeszcze jedną funkcją narazie odpowiedzialną za banowanie oto te funkcje :

  1. <?php
  2. ///////////////////////////////////
  3. //////////dodaj bana
  4. ///////////////////////////////////
  5. function ban($ip) {
  6. if($_GET['action'] == 'ban' && $_GET['id']) {
  7. $ban_db = 'ip.txt';
  8. $hand = fopen($ban_db, 'w');
  9. flock($hand, LOCK_EX);
  10. fwrite($hand, $ip.'n');
  11. flock($hand, LOCK_UN);
  12. fclose($hand);
  13. echo 'Dodano bana';
  14. }
  15. }
  16. ///////////////////////////////////
  17. //////////panel po zalogwaniu
  18. ///////////////////////////////////
  19. function paneladmina() {
  20. global $PHP_SELF, $linki, $i;
  21. if(logowanie() == TRUE) {
  22. echo ' <div id="title"><font class="decor">'.$linki[$i]['ip'].'</font>
  23. <font class="decor">#</font> <a href="'.$PHP_SELF.'&action=ban&id='.$i.'">Zbanuj</a>
  24. <font class="decor">#</font> <a href="'.$PHP_SELF.'&action=edit&id='.$i.'">Edytuj</a>
  25. <font class="decor">#</font> <a href="'.$PHP_SELF.'&action=delete&id='.$i.'">Kasuj</a>
  26. <font class="decor">#</font> <a href="panel.php">Panel Admina</a></div>';
  27. ban($linki[$i]['ip']);
  28. }
  29. }
  30. ?>

I teraz właśnie chyba wszystko powinno chodzić ale nic sie niedzieje gdy jest adres: action=edit&id='.$i.' :?:
co jest tego winą :?: sad.gif
Go to the top of the page
+Quote Post
nospor
post 14.11.2005, 15:21:15
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




mowisz ze dajesz linka action=edit&id='.$i.' i nic sie nie dzieje. Natomiast w funkcji ban() wyswietlasz cokolwiek gdy action==ban a nie edit, wiec sie nie dziw ze funckja ban nic ci nie wyswietla.

pozatym do funkcji ban przekazujesz $ip, do ktorego wogole sie nie odwolujesz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dr_bonzo
post 14.11.2005, 15:27:50
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


A wywolujesz te funkcje?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Apo
post 14.11.2005, 18:24:44
Post #4





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


No wywołuje tylko funkcje paneladmina. Dlatego dałem funkcje ban do funkcji paneladmina.
Go to the top of the page
+Quote Post
dtb
post 15.11.2005, 10:16:39
Post #5





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


1. wydaje mi sie że nie można tworzyc funkcji wewnątrz funkcji, gdyż przy ponownym wywołaniu głównej funkcji wyskoczy błąd bo że nie można stwoprzyc drugiej funkcji o takiej nazwie. (kiedys mialem podobny problem)
2. czy nie chodzilło czy przypadkiem o action=ban&id='.$i.' ?
3. zmień $_GET['id'] na isset($_GET['id']) w ifie
4. fopen($ban_db, 'w'): w - otwiera plik tylko do zapisu. jeżeli plik istnieje wszystkie dane zostaną skasowane, jeżeli nie, php spróbuje go utworzyć. czy nie chodzilo ci o dopisywanie do pliku zamiast nadpisywanie (a zamiast w)?

Ten post edytował dtb 15.11.2005, 10:17:18


--------------------
Go to the top of the page
+Quote Post
nospor
post 15.11.2005, 10:19:52
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@dtb tutaj nie jest tworzona funkcja w funkcji, a jest wywoływana funkcja w funkcji. Lekka roznica smile.gif

@Apo nie napisaleś czy moja skromna uwaga była słuszna co do linku i warunku


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Apo
post 15.11.2005, 16:47:14
Post #7





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


@nospor
c oto twojegi linku to z pośpiechu popełniłem błąd. A wszystkie te drobne błędy typu 'w' czy w if-ie isset(&_GET['id']) nie maja większego znaczenia, bo chce aby mi to ogółem chodziło a potem przechodze do szczegółów.
Aha nospor a jak nie przekazuje wartości $ip do funkcji jak wydaje mie sie że jest przekazywane tu : ban($linki[$i]['ip']); w tej drugiej funkcji na końcu w poscie 1.

Ten post edytował Apo 15.11.2005, 16:59:03
Go to the top of the page
+Quote Post
nospor
post 15.11.2005, 17:04:13
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja nie napisalem ze nie przekazujesz, a ze sie nie odwolujesz (nie wykorzystujesz). To lekka roznica

Podaj jeszcze raz poprawiony kod, poprawione pytanie , bo przez te twoje bledy nie wiem oco ci chodzilo smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Apo
post 15.11.2005, 17:40:45
Post #9





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


heh narazie dałem sobie z tym spokój zrobie to potem ;] narazie proste rzeczy smile.gif
ale jeszczy tylko 1 pytanie.
W pliku z kategoriami serializuje dane. Potem przy pomocy funkcji je odczytuje i tu mam kod:

  1. <?php
  2.  $linki = show('category_db.txt');
  3.  $linki = unserialize($linki);
  4. switch($_POST['cat']) {
  5. for($i=0; $i < count($linki); $i++) {
  6. case $i:
  7. $category = $linki[$i]['kategoria'];
  8. break;
  9. }
  10.  default:
  11.  $category = 'inna';
  12. }
  13. ?>

I odczytuje te kategorie i chce dać na switcha. Ake wyskakuje mi błąd:
Parse error: syntax error, unexpected T_FOR, expecting T_CASE or T_DEFAULT or '}' in g:\usr\apache\httpd\html\category\index.php on line 72

Linia 72:
for($i=0; $i < count($linki); $i++) {

No i moim zdaniem tu nie ma błedu ale coś robie źle sad.gif
Go to the top of the page
+Quote Post
nospor
post 15.11.2005, 17:44:05
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skladani switch nie pozwala na wkladanie zadnych petli w srodek. musisz recznie robic te case a nie tak jak teraz dynamicznie smile.gif

No, ewentualnie moglbyc stworzyc dynamiczne string reprezentujacy twoj kod php i potem go evalem potraktowac.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Apo
post 15.11.2005, 18:48:47
Post #11





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


hmm poczytałem o tym eval ale to sie raczej nie nada.
Bo mam takie coś sobie tongue.gif
kategorie są zapisane w pliku i przez panel adminia można je dodawać i usuwać.
No wiec sie zmienia zawartość pliku. I przy dodanio strony do mojego katalogu stron www jest wybór kategorii. I tam właśnie sa generowane te wpisy z pliku w polu select. Po wyborze select 'switch' ustawiał kategorie z pola select do zmiennej $category i zapisywał do pliku:

  1. <?php
  2. switch($_POST['cat']) {
  3. case 0:
  4. $category = 'Webmaster';
  5. break;
  6. case 1:
  7. $category = 'Programowanie';
  8. break;
  9. case 2:
  10. $category = 'Grafika';
  11. break;
  12. }
  13.  
  14. $linki[] = array('kategoria' => $category, 'autor' => $nickzform, 'www' => $wwwzform, 'tytul' => $titlezform, 'opis' => $opiszform, 'ip' => $numerip, 'id' => $numerid);
  15. $linki = serialize($linki);
  16. add('baza.txt', $linki);
  17. ?>

Coś takiego.
Może macie propozycje jak to rozwiązać snitch.gif
Go to the top of the page
+Quote Post
Hacker
post 15.11.2005, 22:20:20
Post #12





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

Ostrzeżenie: (0%)
-----


A próbowałeś tak??
  1. <?php
  2.  $linki = show('category_db.txt');
  3.  $linki = unserialize($linki);
  4.  if ($_POST['cat'] > count($linki) || !$linki[$_POST['cat']])
  5.  $kategoria = 'cośtam';
  6.  else
  7.  $kategoria = $linki[$_POST['cat']]['kategoria'];
  8.  
  9. ?>


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 22:07