|
Przesyłanie danych w
parametrach linku / (urlencode() i urldecode() /
Przy pomocy parametrów w linku możemy przesyłać pomiędzy stronami wiele
potrzebnych informacji np. tworząc link:
<?
$a="abc";
$b="def";
echo"<a href=strona.php3?dane1=$a&dane2=$b>przekaż</a>"
?>
przekażemy informacje do pliku strona.php3, które możemy w nim wyświetlić
np. w ten sposób
<?
echo"
wartość dane1 to: $dane1
wartość dane2 to: $dane2
";
?>
Inaczej sprawa wygląda gdy musimy przesłać dłuższy tekst, wszystko co
pojawi się po pustej spacji nie będzie widziane w linku. Aby ominąć ten
problem należy zastosować najpierw funkcję urlencode()
Czyli na przykład kod wyglądałby tak:
<?
$a="długi tekst dzielony spacjami";
$b="to też jest długi tekst dzielony spacjami";
echo"<a href=strona.php3?dane1=".$a=urlencode($a)."&dane2=".$b=urlencode($b).">przekaż</a>"
?>
natomiast w pliku odbierającym dane z parametrów musimy zastosować funkcję
urldecode():
<?
echo"
wartość dane1 to ".$dane1=urldecode($dane1)."
wartość dane2 to ".$dane2=urldecode($dane2)."
";
?>
Przy zastosowaniu funkcji urlencode() puste miejsca zostaną zamienione na
"+" :
$a="długi+tekst+dzielony+spacjami";
$b="to+też+jest+długi+tekst+dzielony+spacjami";
natomiast przy odebraniu danych funkcja urldecode() zamieni "+" z
powrotem
na puste miejsca.
Ten sam efekt możemy uzyskać stosując funkcję zamiany stringa str_replace()
:
$a = str_replace("
","_",$a);
w pliku wysyłającym
i
$a = str_replace("_","
",$a);
w pliku przyjmującym
ten drugi sposób bywa w wielu przypadkach dużo wygodniejszy, choć
może sprawiać wrażenie "mniej profesjonalnego".
dodał: Rip
|