Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SMF] SSI.php - modyfikacja pliku, Problem z wstawianiem zmiennych.
Tomplus
post
Post #1





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Mam kod w pliku SSI.php z forum Simple Machine Forum.
Poniżej mam funkcję w której nie trzeba zwracać uwagę na to co wyświetli, a raczej chodzi o to dlaczego nie działa ?

ORGINALNA. (echo) - oczywiście działa świetnie
  1. function ssi_welcome($output_method = 'echo')
  2. {
  3. global $context, $txt, $scripturl;
  4.  
  5. if ($output_method == 'echo')
  6. {
  7. if ($context['user']['is_guest'])
  8. echo sprintf($txt['welcome_guest'], $txt['guest_title']);
  9. else
  10. echo $txt['hello_member'], ' <strong>', $context['user']['name'], '</strong>', allowedTo('pm_read') ? ', ' . $txt['msg_alert_you_have'] . ' <a href="' . $scripturl . '?action=pm">' . $context['user']['messages'] . ' ' . ($context['user']['messages'] == '1' ? $txt['message_lowercase'] : $txt['msg_alert_messages']) . '</a>' . $txt['newmessages4'] . ' ' . $context['user']['unread_messages'] . ' ' . ($context['user']['unread_messages'] == '1' ? $txt['newmessages0'] : $txt['newmessages1']) : '', '.';
  11. }
  12. // Don't echo... then do what?!
  13. else
  14. return $context['user'];
  15. }



WŁASNA ($SHOW .=)
  1. function ssi_welcome($output_method = 'echo')
  2. {
  3. global $context, $txt, $scripturl;
  4. if ($output_method == 'echo')
  5. {
  6. if ($context['user']['is_guest']) $SHOW .= sprintf($txt['welcome_guest'], $txt['guest_title']);
  7. else $SHOW .= ' ',$txt['hello_member'], ' <strong>', $context['user']['name'], '</strong>', allowedTo('pm_read') ? ', ' . $txt['msg_alert_you_have'] . ' <a href="' . $scripturl . '?action=pm">' . $context['user']['messages'] . ' ' . ($context['user']['messages'] == '1' ? $txt['message_lowercase'] : $txt['msg_alert_messages']) . '</a>' . $txt['newmessages4'] . ' ' . $context['user']['unread_messages'] . ' ' . ($context['user']['unread_messages'] == '1' ? $txt['newmessages0'] : $txt['newmessages1']) : '', '.';
  8. }
  9. else return $context['user'];
  10. }

Pojawia się błąd.
Kod
Parse error: syntax error, unexpected ',' in /forum/SSI.php on line 169


Dlaczego po zmianie echo na zmienną przestało działać wyświetlanie ?

Ja znam teraz tylko jeden sposób na naprawę, aby funkcjonowało zgodnie z moimi oczekiwaniami czyli przepisać każdą funkcję stosując normalne kodowanie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Całe przypisanie do $SHOW bruździ bo używa , a nie . jako symbolu konkatenacji stringów. Echo jest konstruktem, który pozwala zastosować , z racji podawania kolejnych stringów jako parametrów dla niego. Innymi słowy:
  1. echo $cos, 'tekst', $cos2, $cos3;

jest poprawne. Ale już
  1. $SHOW .= $cos, 'tekst', $cos2, $cos3;

jest błędem składni. Ot całe magiczne know-how. Zamień , na . i powinno hulać.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Masz racje. Dzięki.

Ale raczej jest na odwrót.

Bo wszędzie zmienna $SHOW używa kropki, a tylko w funkcjach SSI.php jest przecinek i kropka w jednej linii jednocześnie.



Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To ja chyba widzę za dużo przecinków winksmiley.jpg Pozwól że przekleję Twój kod i zaznaczę na czerwono gdzie dla $SHOW w Twojej metodzie widać przecinki.

$SHOW .= ' ',$txt['hello_member'], ' <strong>', $context['user']['name'], '</strong>', allowedTo('pm_read') ? ', ' . $txt['msg_alert_you_have'] . ' <a href="' . $scripturl . '?action=pm">' . $context['user']['messages'] . ' ' . ($context['user']['messages'] == '1' ? $txt['message_lowercase'] : $txt['msg_alert_messages']) . '</a>' . $txt['newmessages4'] . ' ' . $context['user']['unread_messages'] . ' ' . ($context['user']['unread_messages'] == '1' ? $txt['newmessages0'] : $txt['newmessages1']) : '', '.';

I naprawdę zwracaj uwagę oraz sprawdź dwa razy, gdy ktoś Ci mówi, że jednak jest inaczej niż myślisz. Popraw te przecinki na kropki, a powinno zadziałać.

Co do uzycia przecinków i kropek w SSI.php, to może to wynikać z dorzucenia tego skryptu przez kogoś, kto nie zwrócił na to uwagi bo całość działałajak powinna i uzycie w echo jest poprawne, więc nie sypało nawet notice'a smile.gif Ty przerabiałeś i już na to nie zwróciłeś uwagi i stąd nagle błędy. Trudno na początek zauważyć to, bo można mieć wrażenie, że przecinki oddzielają parametry którejś funkcji wewnątrz.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Aktualny czas: 21.08.2025 - 14:09