Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 404 po wpisaniu rosyjskich znaków
Forum PHP.pl > Forum > PHP
listonosz2
Witam, mam problem ze skryptem php mianowicie jest to strona z opcją dodawania ogłoszeń w której po wprowadzeniu ogłoszenia zawierającego polskie znaki wszystko wyświetla się prawidłowo.
Gdy chcę jako tytuł ogłoszenia dodać wpis po rosyjsku oczywiście wpis się wyświetla rosyjskie znaki również ale w adresie url nie ma żadnych znaków odnośnika do tej podstrony
powinno wyświetlać się to przykładowo w taki sposób

//obyavlenie/mundshtuk-altovyy-metal-gold-7style-lebayle-IDbYwDM.html#d005cedab2;promoted

u mnie za to jest tyle

//produkt/gimnazja/2
po "2" powinien być ciąg znaków odnoszących się do ogłoszenia za to nie ma nic
za to po polsku jest wszystko
//produkt/kursy-komputerowe/4/programowanie-java

gomyślam się że chodzi o funkcję get
czy mam coś kombinować z *htacces? sciana.gif
Tomplus
Tj. cyrylica w URL czy nie ma?
Jeżeli jest, to gdzie jest zapisany URL w bazie? Jeżeli w bazie czy tam są zapisane cyrylicą?

Sprawdź czy w .htaccess nie masz ograniczenia tylko do znaków łacińskich, albo po prostu długości znaków.
Przetestuj swój kod tutaj:
http://htaccess.mwl.be/

Jeżeli jest w porządku, to przeanalizuj _GETy
trueblue
Cyrylica nie jest zamieniana poprawnie na odpowiedniki z transkrypcji fonetycznej, bo pewnie funkcja budująca przyjazny URL w ogóle jej nie bierze pod uwagę (wycina te znaki).
Nie ma to związku z .htaccess.
listonosz2
Zrobiłem test tak wygląda
normalnie :
# Turn on URL rewriting
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:private)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

i po teście


RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] This condition is not met.
2 RewriteRule ^(.*)$ http://%1/$1 [R=301,L] This rule was not met.
3 RewriteBase / Using / as the base for the rewrites.
4 Order Deny,Allow This line is not supported by our tool.
5 Deny From All This line is not supported by our tool.
6 RewriteRule ^(?:private)\b.* index.php/$0 [L] This rule was not met.
7 RewriteCond %{REQUEST_FILENAME} !-f This condition was met.
8 RewriteCond %{REQUEST_FILENAME} !-d This condition was met.
9 RewriteRule .* index.php/$0 [PT]
Tomplus
Czyli błąd jest w kodzie PHP

Zastosuj funckję:

urlencode()
i urldecode() dla dekodowania znaków diaktrycznych.

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.