Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

problema addslashes
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
nemo



Data înscrierii: 04/Mai/2004
Mesaje: 31

Trimis: Vin Oct 08, 2004 4:13 pm    Titlul subiectului: problema addslashes  

am si eu un formular cu 2 cimpuri sa zicem. unul de tip input text(subiect), si celalalt textarea(corpul mesajului) exact ca cel din phpromania de pe forum.
dai 'Trimite'. daca nu ai scris nimic in subiect apare mesajul "Va rugam completati la subiect", iar cimpul textarea va contine datele introduse anterior(le retin in value=<?=$_POST['mesaj']?>).
problema este ca daca am ex: I'll be back in cimpul textarea ce imi va aparea acum in cimpul textarea este I\'ll be back, daca mai dau odata 'Trimite' fara sa mai modific nimic si din nou cu cimpul subiect necompletat imi va aparea i\\\'ll ba back , inca un Trimite si 7 backslash-uri imi vor aprea.
eu nu fac nici un fel de verificare a textului(ce este scris; fac verif doar daca s-a scris sau nu) DOAR in momentul introducerii in baza de date. atunci am:

$subiect = htmlspecialchars(trim($subiect));
$mesaj = htmlspecialchars(trim($mesaj));
if (!get_magic_quotes_gpc()){
$subiect = addslashes(($subiect);
$mesaj = addslashes($mesaj);
}
dar asta deja userul nu o mai vede... si nu are nci o legatura.

in manual scrie:
Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this.
eu fac verificarea, si chiar daca tai codul de mai sus, chiar daca il mut la inceputul scriptului sau la sfirstit, imi face acelasi lucru. iar eu vreau sa-l fac sa mearga indiferent de directivele din php.ini

mersi
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Sâm Oct 09, 2004 12:51 am    Titlul subiectului:  

Exista si functia stripslashes()
Sus  
nemo



Data înscrierii: 04/Mai/2004
Mesaje: 31

Trimis: Sâm Oct 09, 2004 12:25 pm    Titlul subiectului: stripslashes() face ceva ciudat  

stiu ca exista si stripslashes(). uite cum am gindit eu logic(asa zic eu):

$subiect = stripslashes($subiect);
$mesaje = stripslashes($mesaj);
//totul este ok. nu imi mai apar backslashurile alea aiurea
// acum verific daca lungimea sub si mes > 0. dc da $ok=true;
if ($ok){ //adica si subiect si mesaj contin caractere
if (!get_magic_quotes_gpc()){
$subiect = addslashes($subiect);
$mesaje = addslashes($mesaj);
}
//acum fac INSERT .... in tabela
}
ar fi trebuit sa mearga. dupa ce trece de if($ok) ori le pune php slashurile daca directiva este on, ori le pun eu cu addslashes daca este off.
mie insa imi da eroare referitoare la sintaxa mysql pt. ca bineinteles nu poate sa introduca cu ' . asta inseamna ca nu sunt puse slashurile.

daca nu mai fac verificarea if(!get_mag...) si pun $subiect = addsl... respectiv $mesaj=add... merge perfect indiferent de cum este get_magic_quote_gpc() in php.ini
as putea sa-l las asa, oare este corect?
Sus  
svarga15



Data înscrierii: 11/Oct/2004
Mesaje: 9

Trimis: Lun Oct 11, 2004 11:59 am    Titlul subiectului: Alternativa addslashes()  

Pt anulare efect magic quotes poti folosii functiile urmatoare :

function array_stripslashes(&$array)
{

foreach ($array as $key=>$value)
{
if (is_array($array[$key]))
{
stripslashes_array($array[$key]);
}
else
{
$array[$key] = stripslashes($array[$key]);
}
}
}


set_magic_quotes_runtime(0);

if (get_magic_quotes_gpc ())
{
if ( version_compare("4.1.0", phpversion(), "<") )
{
array_stripslashes($_POST);
array_stripslashes($_GET);
array_stripslashes($_COOKIES);
}
array_stripslashes($HTTP_POST_VARS);
array_stripslashes($HTTP_GET_VARS);
array_stripslashes($HTTP_COOKIES_VARS);
}



Pt afisarea intr-un textarea sa input poti folosii functia :



function unformatUserInputText( $text ) {

$text = str_replace("&lt;", "<", $text);
$text = str_replace("&gt;", ">", $text);
$text = str_replace(" &nbsp;"," ",$text);
$text = str_replace("<br />","",$text);

return($text);
}


Succes ;)
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community