Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML]Cannot generate system identifier for general entity
propage
post 30.08.2008, 08:38:25
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

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


Nie wiem do jakiej kategori ma należeć ten temat

kiedy puszczam stronę przez validator dostaje taki komunikat
"
  1. Line 246, Column 372: cannot generate system identifier for general entity "c" . …_koszyka" href="index.php?p=cetegory&c=Narzdzia_czce&s_c=Narzdzia_Laserowe_i_

    An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (winksmiley.jpg. The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".

    Entity references start with an ampersand (&) and end with a semicolon (winksmiley.jpg. If you want to use a literal ampersand in your document you must encode it as "&" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and æ are different characters.

    If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem.

    Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed.
"
Linki "index.php?p=cetegory&c=Narzdzia_czce&s_c=Narzd .. " są tworzone w htaaccesie, jeśli zaminie "&" na "&" wtedy plik hta przestaje działać i cała strona nie dziła, co jest przyczyną wyświetlania tego błędu ?
Go to the top of the page
+Quote Post
phpion
post 30.08.2008, 08:59:59
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No przecież pisze jak byk:
Cytat
If you want to use a literal ampersand in your document you must encode it as "&" (even inside URLs!).

czyli trzaskasz:
  1. <a href="index.php?p=cetegory&amp;c=Narzdzia_czce&amp;s_c=Narzdzia_Laserowe_i">Link</a>
Go to the top of the page
+Quote Post
szopen
post 30.08.2008, 13:07:18
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 5
Dołączył: 28.08.2008

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


Cytat(propage @ 30.08.2008, 09:38:25 ) *
Linki "index.php?p=cetegory&c=Narzdzia_czce&s_c=Narzd .. " są tworzone w htaaccesie, jeśli zaminie "&" na "&amp;" wtedy plik hta przestaje działać i cała strona nie dziła, co jest przyczyną wyświetlania tego błędu ?

Nie wiem czy dobrze zrozumiałem. & kodujesz jako &amp; _tylko_ w plikach XML (XHTML). W htaacces zwykły &.
Go to the top of the page
+Quote Post
propage
post 30.08.2008, 13:33:49
Post #4





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

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


"Nie wiem czy dobrze zrozumiałem. & kodujesz jako &amp; _tylko_ w plikach XML (XHTML). W htaacces zwykły &."

Tak ale jak daje w ktaacces zwykly & to wyskakuje mi ten blad w walidatorze, jeśli dam &amp; w hataacces to validator nie wywala błedu, jednak wartosci z GET sa złe, więc zrobi coś takiego
  1. <?
  2. foreach($_GET as $key => $value)
  3. {
  4. if(substr($key, 0, 4) == 'amp;'){
  5. $new_key = substr($key, 4, strlen($key));
  6. unset($_GET[$key]);
  7. $_GET[$new_key] = $value;
  8. }
  9.  
  10. }
  11. ?>

Troche to bezsensu, no ale działa

Dodatkowo walidator wywala mi błąd na tej samej podstronie, ale co ktoreś odświeżenie że nie może orczytać kodowania, chodzi mu o poleski litery, strona jest kodowana zapisana utf-8 i pisze ja uzywając tego kodowania, więc nie wiem o co chodzi
Go to the top of the page
+Quote Post
phpion
post 30.08.2008, 18:42:57
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




.htaccess nie ma żadnego wpływu na walidację strony! W .htaccess wpisujesz regułki z wykorzystaniem zwykłego & (coprawda Eclipse PDT oznacza to jako błąd ale tym się nie przejmuj). Następnie na stronie, jak napisał @szopen, podajesz linki w postaci &amp; Po kliknięciu w link w adresie przeglądarki zobaczysz samo &, bez amp;.
Go to the top of the page
+Quote Post
szopen
post 30.08.2008, 19:43:33
Post #6





Grupa: Zarejestrowani
Postów: 60
Pomógł: 5
Dołączył: 28.08.2008

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


Dokładnie. Do serwera ma iść zapytanie ze znakiem & . Można sobie podejrzeć pakiety, albo nawet logi serwera -- linijki z GET. & jest tylko zakodowanym znakiem & w plikach XML. Jeśli w zapytaniu, jakie idzie do serwera masz ?zm1=wart1&zm2=wart2 , to PHP widzi
Kod
array(2) {
  ["zm1"]=>
  string(5) "wart1"
  ["amp;zm2"]=>
  string(5) "wart2"
}

a tego raczej nie chcemy.
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: 18.07.2025 - 04:25