Autor | Zpráva | ||
---|---|---|---|
ladder Profil |
#1 · Zasláno: 10. 7. 2012, 19:34:04
Čaute...
Programujem admin pre vkladanie takéhoto embed kódu do databáze: <object width="250" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="gsSong3541847685" name="gsSong3541847685"><param name="movie" value="http://grooveshark.com/songWidget.swf" /><param name="wmode" value="window" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="hostname=cowbell.grooveshark.com&songIDs=35418476&style=metal&p=0" /><object type="application/x-shockwave-flash" data="http://grooveshark.com/songWidget.swf" width="250" height="40"><param name="wmode" value="window" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="hostname=cowbell.grooveshark.com&songIDs=35418476&style=metal&p=0" /><span>Rolling In The Deep by <a href="http://grooveshark.com/artist/Adele/71827" title="Adele">Adele</a> on Grooveshark</span></object></object> Pred tým ako pošlem query ešte replacnem " za \". $player = str_replace('"','\"',$_GET['player']); Problém je však ešte stále so znakom & (ampersand). Do databáze sa zapíše iba po prvý ampersand: <object width="250" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="gsSong3541847685" name="gsSong3541847685"><param name="movie" value="http://grooveshark.com/songWidget.swf" /><param name="wmode" value="window" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="hostname=cowbell.grooveshark.com Potrebujem ho teda zameniť za html entitu %26. str_replace("&","%26",$player) nefunguje, htmlentities($player) nemôžem použiť, lebo ten mi zmení aj <, > a ", čo nechcem. Vie mi niekto prosím pomôcť? Vopred ďakujem. |
||
Darker Profil |
#2 · Zasláno: 10. 7. 2012, 19:44:40
ladder:
„Pred tým ako pošlem query ešte replacnem " za \".“ Pořád se tvoje databáze dá nabourat pomocí \. Raději používej mysql_real_escape_string. |
||
ladder Profil |
#3 · Zasláno: 10. 7. 2012, 19:53:46
Okey, skúsil som mysql_real_escape_string. Ale & to aj tak nerieši... problém ostáva.
|
||
panther Profil |
#4 · Zasláno: 10. 7. 2012, 19:56:27
ladder:
data taháš z GET , v dané GET proměnná je string před následujícím ampersandem. Za ním následuje další proměnná. Takže, žádný problém nemáš, jen nechápeš základní práce s polem GET . Doporučuji dostudovat.
|
||
ladder Profil |
Asi máš pravdu, nechápem... nechápem ani čo máš na mysli ty. Sorry, som v PHP len junior. Dáta posielam z admin.php do spracuj.php cez ajax...
Ak som správne pochopil čo vravíš ty, tak sme sa asi len nedorozumeli, kvôli tomu, že som dal $player = str_replace('"','\"',$_GET['player']); a potom uvádzal už len str_replace("&","%26",$player). Ale na tom nezáleží. Ide o tú istú premennú. Podstatné je, že treba zameniť ampersandy za %26 a je jedno, či obsah premennej ťahám z GET alebo nie. $player = str_replace('"','\"',$_GET['player']); $player = str_replace('&','%26',$player); mysql_query("INSERT INTO data (player) VALUES ('" . $player . "')"; |
||
LaMMa Profil |
#6 · Zasláno: 10. 7. 2012, 20:14:43
ladder:
ampersandom sa v adrese oddelujú jednotlivé premenné, preto získaš vždy len dáta po prvý &. Riešením by bolo zamenit & za %26 ešte pred odoslaním do spracuj.php
|
||
ladder Profil |
#7 · Zasláno: 10. 7. 2012, 20:16:59
LaMMa:
No jasné! :) Vďaka... už chápem. :) Že mi to nedošlo... |
||
Darker Profil |
#8 · Zasláno: 10. 7. 2012, 20:53:11
Daleko lepší nápad je použít POST.
|
||
Časová prodleva: 12 let
|
0