Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z foreach()
Forum PHP.pl > Forum > Przedszkole
Skwara
Mam taki kodzik. Odpowiedzialny jest za sprawdzanie czy są jakieś niepotrzebnie wpisane rzeczy (co ma kasować ustawia się w panelu admina). Jest to kawałek kodu dodatku do phpBB.

Jest to kawałek pliku unicomm.php:
  1. <?php
  2. function unicomm_get($data)
  3. {
  4. global $unicomm_gdata,$error_msg,$error,$lang;
  5. //var_dump($data);
  6. foreach ($data as $k => $md)
  7. {
  8. $ug=$unicomm_gdata[$k];
  9.  
  10. if ($ug['uc_find'])
  11. {
  12. $find=explode("\n",$ug['uc_find']);
  13. $replace=explode("\n",$ug['uc_replace']);
  14. foreach ($find as $k2=>$f)
  15. {
  16. $r='';
  17. $r=$replace[$r];
  18. $f=trim($f);
  19. $r=trim($r);
  20. if ($f)
  21. {
  22. $data[$k]=preg_replace($f,$r,$md);
  23. }
  24. }
  25. }
  26. //echo '<tt>sprawdzam '.$data[$k].' przez '.$ug['uc_pattern'].' wynik '.preg_match('#^'.trim($ug['uc_pattern']).'$#i',$data[$k]).'</tt><br/>';
  27. if ($data[$k]&&$ug['uc_pattern'] && !preg_match('#^'.trim($ug['uc_pattern']).'$#i',$data[$k]))
  28. {
  29. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['UniCommProfileError'],$ug['uc_name']);
  30. $error = true;
  31. }
  32. }
  33. $mydata=base64_encode(serialize($data));
  34. //die();
  35. return $mydata;
  36. }
  37.  
  38. ?>


Niestety podczas rejestracji wyskakuje błąd.
Kod
Warning: Invalid argument supplied for foreach() in /home/konto/aaa/public_html/forum/includes/unicomm.php on line 138

Warning: Cannot modify header information - headers already sent by (output started at /home/konto/aaa/public_html/forum/includes/unicomm.php:138) in /home/konto/aaa/public_html/forum/includes/page_header.php on line 332

Warning: Cannot modify header information - headers already sent by (output started at /home/konto/aaa/public_html/forum/includes/unicomm.php:138) in /home/konto/aaa/public_html/forum/includes/page_header.php on line 334

Warning: Cannot modify header information - headers already sent by (output started at /home/konto/aaa/public_html/forum/includes/unicomm.php:138) in /home/konto/aaa/public_html/forum/includes/page_header.php on line 335


Ale błąd odziwo wyskakuje tylko przy rejestracji. Przy edytowaniu profilu już nie. Zaznaczam, że funkcja działa smile.gif Dodam jeszcze, że danymi wejściowymi dla funkcji unicomm_get() to unicomm_get($_POST['unicomm'])
W czym jest problem? bo ja już nie wiem biggrin.gif

P.S. Wiem, że powinienem kierować się z takim pytaniem na polski support. Owszem kierowałem te pytanie, ale nikt mi nie pomógł. I zaznaczam jeszcze, że nie jestem autorem tego moda. smile.gif
W czym jest problem? bo ja już nie wiem biggrin.gif
sf
http://php.faq.pl/klucz/blad_header
ikioloak
blad headera wynika z tego ze php wyrzuca blad dot. foreach().

Cytat
Dodam jeszcze, że danymi wejściowymi dla funkcji unicomm_get() to unicomm_get($_POST['unicomm'])


A co jest w zmiennej $_POST['unicomm'] ? Bo w tym najprawodpodobniej tkwi blad.
Skwara
Cytat(ikioloak @ 2006-01-30 09:22:12)
blad headera wynika z tego ze php wyrzuca blad dot. foreach().

Cytat
Dodam jeszcze, że danymi wejściowymi dla funkcji unicomm_get() to unicomm_get($_POST['unicomm'])


A co jest w zmiennej $_POST['unicomm'] ? Bo w tym najprawodpodobniej tkwi blad.

Po wejściu w rejestracja nic. A błąd wyskakuje po wejściu właśnie w rejestracje.
Ale docelowo $_POST['unicomm'] jest przeznaczone pod tekst. Tekst to tablica znaków więc powinno być OK. Funkcja działa tylko nie wiem czemu ten głupi błąd wyskakuje ;/
ikioloak
ktora u ciebie to jest linia 138 bo wlasnie zauwazylem ze w funkcji jest 2x foreach(). moze ta druga linia jest przyczyna bledu.
Skwara
U mnie linia 138 to ta
  1. <?php
  2. foreach ($data as $k => $md)
  3. ?>
mike
Wartość patametru $data, którą przekazujesz do funkcji unicomm_get() nie jest tablicą.

Pokaż lepiej kod, w którym wywołujesz tą funkcję i skąd masz parametry, które jej przekazujesz.

P.S.
Przenoszę na php Pocz.
Skwara
Już rozwiązałem problem smile.gif
Zrobiłem sprawdzanie czy $data jest puste czy nie smile.gif
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.