Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Zmiana języków na stronie
KrzysiekKCN
post
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Witam.

Otóż znalazłem skrypt do zmiany języków poprzez SESJE i wyskakuje mi błąd, którego nie potrafię wyjaśnić.
A drugim pytaniem jest jak wywołać zmianę tej sesji poprzez hiperłącze?
  1. <?php
  2. error_reporting( E_ALL );
  3. ini_set( 'display_errors', 1 );
  4. // config
  5. require_once ('config.php');
  6. // language
  7.  
  8. if ($_GET['lang'] == 'eng') {
  9. $_SESSION['lang'] = 'english';
  10. }
  11.  
  12. if($_SESSION['lang'] = 'english'); {
  13. include('languages/eng.ini');
  14. } else {
  15. include('languages/pl.ini');
  16. }
  17.  
  18. if($_SESSION['lang'] = 'spanish'); {
  19. include('languages/sp.ini');
  20. } else {
  21. include('languages/pl.ini');
  22. }
  23. ?>


A błąd który wyskakuje to:
  1. Parse error: syntax error, unexpected T_ELSE in C:\xampp\htdocs\jull\index.php on line 15


Więc tak, linki które powinny odpowiadać za języki:
  1. <div class="flags">
  2. <a href="index.php?lang=polish" class="logo"><img src="images/pl.png" border="0"></a>
  3. <a href="index.php?lang=english" class="logo"><img src="images/eng.png" border="0"></a>
  4. <a href="index.php?lang=spanish" class="logo"><img src="images/spain.png" border="0"></a>
  5. </div>


Serdecznie proszę o pomoc, i z góry dzięki.
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




nie:$_SESSION['lang'] = 'english'
a: $_SESSION['lang'] == 'english'
Odrozniak przypisanie od porownania

Co do bledu to nie:
if($_SESSION['lang'] = 'english');
a
if($_SESSION['lang'] = 'english')

Odrozniaj srednik od braku srednika
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Teraz mój kod wygląda tak:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  3. <?php
  4. error_reporting( E_ALL );
  5. ini_set( 'display_errors', 1 );
  6. // config
  7. require_once ('config.php');
  8. // language
  9. if ($_GET['lang'] == 'eng') {
  10. $_SESSION['lang'] = 'english';
  11. }
  12.  
  13. if($_SESSION['lang'] == 'english') {
  14. include('languages/eng.ini');
  15. } else {
  16. include('languages/pl.ini');
  17. }
  18.  
  19. if($_SESSION['lang'] == 'spanish') {
  20. include('languages/sp.ini');
  21. } else {
  22. include('languages/pl.ini');
  23. }
  24. ?>

A błędy są takie:
  1. Notice: Undefined variable: HTTP_SERVER_VARS in C:\xampp\htdocs\jull\online.php on line 5
  2.  
  3. Notice: Undefined index: body in C:\xampp\htdocs\jull\config.php on line 9
  4.  
  5. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  6.  
  7. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  8.  
  9. Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 10
  10.  
  11. Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 14
  12.  
  13. Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 20
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Czego nie rozumiesz w bledzie:
"Undefined variable: HTTP_SERVER_VARS in C:\xampp\htdocs\jull\online.php on line 5"
?
Tlumacze: nieokreslona zmienna HTTP_SERVER_VARS w pliku online.php w linii 5

Zanim uzyjesz jakiejs zmiennej to sprawdzaj najpierw czy ona istnieje

Analogicznie tutaj:
"Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 10"
Zanim odwolasz sie do jakiegos indeksu w tablicy, to sprawdz najpierw czy on instnieje
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #5





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


No niby tak, ale plik online.php działał poprawnie, popsuło się dopiero po naprawieniu funkcji IF, a jeden skrypt z drugim nie ma nic wspólnego
  1. <?php
  2. $plik = "online.txt"; // Plik z data
  3. $czas = 30; // Czas
  4. $t = time();
  5. $ip = $HTTP_SERVER_VARS['REMOTE_ADDR']; // IP
  6. $u = explode("\n", str_replace("\r", "", @join("", @file($plik))));
  7. foreach($u as $i => $v)
  8. {
  9. $e = explode("|", $v);
  10. if($e[0] == $ip || $e[1] < $t) unset($u[$i]);
  11. }
  12. $u[] = $ip . "|" . ($t + $czas);
  13. $fp = fopen($plik, "w");
  14. flock($fp, 2);
  15. fputs($fp, join("\n", $u));
  16. flock($fp, 3);
  17. fclose($fp);
  18. echo 'Użytkowników online: <b>'.count($u);
  19. ?>


A co do tych indeksów, to co mam zrobić? dodać $lang = "eng"; ?
Nic nie zrobiłem a błędy już mam inne.
  1.  
  2. Notice: Undefined index: body in C:\xampp\htdocs\jull\config.php on line 9
  3.  
  4. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  5.  
  6. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  7.  
  8. Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 14
  9.  
  10. Notice: Undefined index: lang in C:\xampp\htdocs\jull\index.php on line 20
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Cytat
No niby tak, ale plik online.php działał poprawnie,
Jak dziala poprawnie, skoro pluje bledem NOTICE? ....
poza tym nie: $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
a: $ip = $_SERVER['REMOTE_ADDR'];

Cytat
Notice: Undefined index: body in C:\xampp\htdocs\jull\config.php on line 9
Ok, czego nie zrozumiales w napisanej po polsku instrukcji obslugi:
Cytat
Zanim odwolasz sie do jakiegos indeksu w tablicy, to sprawdz najpierw czy on instnieje

Do sprawdzania czy index istnieje mozesz uzyc isset()
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #7





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Okey, online działa, mógł byś mi powiedzieć co dała twoja zmiana? Skoro jeszcze niedawno nie miałem tego błędu?

I teraz mam tak:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  3. <?php
  4. error_reporting( E_ALL );
  5. ini_set( 'display_errors', 1 );
  6. // config
  7. require_once ('config.php');
  8. // language
  9. if (isset($_GET['lang'])) {
  10.  
  11. if ($_GET['lang'] == 'eng') {
  12. $_SESSION['lang'] = 'english';
  13. }
  14. } else {
  15. echo "Zmienna lang nie zdefiniowana";
  16. }
  17.  
  18. if(isset($_SESSION['lang']))
  19. {
  20. if($_SESSION['lang'] == 'english') {
  21. include('languages/eng.ini');
  22. } else {
  23. include('languages/pl.ini');
  24. }
  25.  
  26. if($_SESSION['lang'] == 'spanish') {
  27. include('languages/sp.ini');
  28. } else {
  29. include('languages/pl.ini');
  30. }
  31. } else {
  32. echo "brak sesji lang";
  33. }


  1.  
  2. Notice: Undefined index: body in C:\xampp\htdocs\jull\config.php on line 9
  3.  
  4. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  5.  
  6. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  7. Zmienna lang nie zdefiniowanabrak sesji lang


A po kliknięciu flagi, zmienna lang się definiuje jedank plik nie jest wczytany.
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Cytat
Okey, online działa, mógł byś mi powiedzieć co dała twoja zmiana?
Chociazby zmiana wersji php czy jego ustawien

Cytat
Notice: Undefined index: body in C:\xampp\htdocs\jull\config.php on line 9
Ile jeszcze razy mam ci pisac, bys najpierw sprawdzil czy jest indeks czy nie? Jak to wkoncu zrobisz to zacznie ci dzialac. Ostatnio jest jakaś fala uzytkownikow, którym proste informacje trzeba pisac po 10 razy by ci wkoncu raczyli sie do nich ustosunkowac

rety.... odwolujesz sie do indeksu BODY w jakiejs tablicy. NIe wiem w jakiej, bo nie podales kodu pliku config.php

Ogolnie to sie robi tak
  1. if (isset($tablica['jakisindkex'])){
  2. //i dopiero tutaj moge cos robic z $tablica['jakisindkex']
  3. }


albo
  1. if (isset($tablica['jakisindkex']) && $tablica['jakisindkex']=='blavbla' ){
  2. //blabla
  3. }


edit: no i skasowal swojego posta na ktorego napisalem odpowiedz....
Powód edycji: [nospor]: [nospor]:
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #9





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Sory, tak właśnie dostałem olśnienia że nie użyłem BODY ;/ Sorki.
Po prostu zapomniałem o tym że skasowałem
  1. <?php
  2.  
  3. if ($body=="")
  4. {
  5. include("sub.php");
  6. }
  7. else {
  8. if (is_file("$body.php"))
  9. {
  10. include("$body.php");
  11. }
  12. else
  13. {
  14. include("error.php");
  15. }
  16. }
  17. ?>


Zostały jeszcze:
  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 9


Próbowałem dodać ob_start() i ob_end_flush() ale błędy nie znikają.

Nie chciałem skasować tylko lekko i mi się przeglądarka zawiesiła.

Ten post edytował KrzysiekKCN 7.01.2011, 13:46:03
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Cytat
Próbowałem dodać ob_start() i ob_end_flush() ale błędy nie znikają.
Gdzie probowales? Bo ob_start nalezy dac na samym poczatku wszystkiego. Zaznaczam slowo "wszystkiego"
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #11





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Tak, na początku skryptu, ale przed doctype.
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Pokaz kod po zmianach, pokaz komunikaty bledow po zmianach, bo gwarantuje ci ze komunikat juz nie bedzie dokladnie taki sam, gdy dasz ob_start na początku (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #13





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  3. <?php
  4. error_reporting( E_ALL );
  5. ini_set( 'display_errors', 1 );
  6. // config
  7. require_once ('config.php');
  8. // language
  9. if (isset($_GET['lang'])) {
  10.  
  11. if ($_GET['lang'] == 'eng') {
  12. $_SESSION['lang'] = 'english';
  13. }
  14. } else {
  15. echo "Zmienna lang nie zdefiniowana";
  16. }
  17.  
  18. if(isset($_SESSION['lang']))
  19. {
  20. if($_SESSION['lang'] == 'english') {
  21. include('languages/eng.ini');
  22. } else {
  23. include('languages/pl.ini');
  24. }
  25.  
  26. if($_SESSION['lang'] == 'spanish') {
  27. include('languages/sp.ini');
  28. } else {
  29. include('languages/pl.ini');
  30. }
  31. } else {
  32. echo "brak sesji lang";
  33. }
  34. echo $lang;
  35. ?>



  1.  
  2. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 10
  3.  
  4. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:3) in C:\xampp\htdocs\jull\index.php on line 10
  5. Zmienna lang nie zdefiniowanabrak sesji langpl
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




Mowiac na samym poczatku mam na mysli na samym poczatku. Tu naprawdę nie ma ukrytej logiki.,..
  1. <?php
  2. ?>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  5. <?php
  6. //blabla reszta kodu
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #15





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Ok, ale błędy i tak te same.
  1.  
  2. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\jull\index.php:1) in C:\xampp\htdocs\jull\index.php on line 12
  3.  
  4. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\jull\index.php:1) in C:\xampp\htdocs\jull\index.php on line 12
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




No wlasnie nie. Bledy juz nie są takie same. Tam była linia 3 a tu jest linia 1

Albo masz plik z BOMem, albo dales enter/spacje na początku (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #17





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


(IMG:http://img839.imageshack.us/img839/4599/boomc.png)

Już błędów brak, ale i tak zmiana języków nie działa, jeżeli wywołam gdzieś coś co jest w kazdym z tych plików pl.ini eng.ini sp.ini

  1. Notice: Undefined variable: mywebadres in C:\xampp\htdocs\jull\index.php on line 60
  2. Użytkowników online: 1


Ten post edytował KrzysiekKCN 7.01.2011, 14:05:54
Go to the top of the page
+Quote Post
nospor
post
Post #18





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




Aj jak ty nie czytasz tego co się pisze (IMG:style_emoticons/default/winksmiley.jpg)

No wlasnie masz miec opcję BEZ BOM
Go to the top of the page
+Quote Post
KrzysiekKCN
post
Post #19





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


omg ^^

Zmieniłem i błędy zniknęły ale nie działa zmiana języków.
Go to the top of the page
+Quote Post
nospor
post
Post #20





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




1) Po czym stwierdzasz ze nie dziala?
2) Sprawdz co zawiera sesja
3)
  1. if($_SESSION['lang'] == 'english') {
  2. include('languages/eng.ini');
  3. } else {
  4. include('languages/pl.ini');
  5. }
  6.  
  7. if($_SESSION['lang'] == 'spanish') {
  8. include('languages/sp.ini');
  9. } else {
  10. include('languages/pl.ini');
  11. }

Tym kodem dla angielskiego zawsze ladujesz polski (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 09:54