Autor Zpráva
Ejdm7
Profil *
Ahoj,
nepodařilo se mi to nikde najít. Jak vložit do databáze HTML kód pomocí mysql_query tak, aby se potom při výběru vypsal do souboru jako html kód, vkládám odkaz.

mysql_query("INSERT into linky (link) VALUES ('<a href="cil_odkazu.php">Odkaz</a>')");

Při vypsaní mysql_erroru tam vadí uvozovky u href v odkazu, ale nevím jak je odstranit.

Díky,
Adam
smiesek
Profil
Ejdm7:
já když jsem tvořila něco podobného na odkazy, tak jsem to vkládala jako text a následně to zobrazila jako HTML

do proměnné $http se vloží seznam.cz
vypíše se
<a href="http://www.'. $http .'">'. $http .'</a>
Ejdm7
Profil *
To jo, ale ty uvozovky kolem adresy odkazu se PHP nelíbí. Řekl bych, že to "zastaví příkaz insert".
smiesek
Profil
Ejdm7:
myslíte tohle?
<a href=\"http://www.'. $http .'\">'. $http .'</a>
Marti_n
Profil
Ejdm7:
Nestačí si ukladať len url cesty linku a následne pri vypísaný k nim pridať html tagy?
Prochy
Profil
Problém je, že ty uvozovky nejsou escapovaný, musíš to napsat následovně:
mysql_query("INSERT into linky (link) VALUES ('<a href=\"cil_odkazu.php\">Odkaz</a>')");
Ejdm7
Profil *
Prochy, smiesek:
Díky. Mám ještě jeden případ -> Vkládám iframe (video z youtube) přes formulář, který nevyplňuju já. Je nějaká možnost toto obejít, abych nemusel každého uživatele nutit escapovat uvozovky?
Dan Charousek
Profil
Ejdm7:
http://php.net/manual/en/function.mysql-real-escape-string.php
Ejdm7
Profil *
Dan Charousek:
Zrovna jsem chtěl napsat, že už jsem úspěšně našel a s mysql_real_escape_string úspěšně vyřešil.
Díky.
Keeehi
Profil
Ejdm7:
Řád bych poznamenal, že to není možnost ale nutnost! Protože jinak necháváš možnost se komukoliv nabourat do databáze. Druhá věc je to, že když skrz tento formulář dovolíš lidem vkládat HTML do stránky, tak umožňuješ zase jiný typ útoku. Tentokrát perzistentní XSS. Což při špatně zabezpečené session může vést k ukradení administrátorského účtu nebo mnoha jiným věcem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0