Intrebare de incepator...
Am o pagina cu un form incare utilizatorii scriu text liber in campul informatii, iar la submit trebuie sa scriu datele intr-o baza de date MS SQL. Folosesc PHP si Apache.
Ce setari trebuie facute (php/apache) sau cum trebuie prelucrata informatia din campul informatii ca sa poata fi scrisa in baza de date avand in vedere ca poate contine orice caracter, inclusiv apostrof/ghilimele.
Multumesc.
[/b]
de incapator
Moderatori: Moderatori, Start Moderator
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
daca vrei sa se permita si introducerea de taguri html dar sa nu poata fi interpretate de catre browser faci asa
Cod: Selectaţi tot
// preluare date
$info = htmlentities($_POST['informatii'], ENT_QUOTES);
// preparare pentru bd
$info_to_bd = mysql_real_escape_string($info);
// salvezi in bd
$query = "INSERT INTO tabel (`informatii`) VALUES ('{$info_to_bd}')";
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
-
Amazing Science
- Average Member
- Mesaje: 131
- Membru din: Dum Oct 15, 2006 7:27 pm
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
deci poti face o functie care sa faca acelasi lucru exemplu
si in rest o apelezi la fel ca si echivalentul mysql... (vezi ca e netestata, am scris aici direct nu stiu cat de buna e)
deci poti face o functie care sa faca acelasi lucru exemplu
Cod: Selectaţi tot
function mssql_real_escape_string($string)
{
// se seteaza valorile pentru inlocuire
$string_escape = array(
"\x00" => "\\x00",
"\n" => "\\n",
"\r" => "\\r",
"\x1a" => "\\x1a",
"\" => "\\",
"'" => "\'",
'"' => '\"',
);
// inlocuire
foreach ($string_escape as $ce => $cum)
$string = str_replace($ce, $cum, $string);
// returneaza rezultatul
return $string;
}
si in rest o apelezi la fel ca si echivalentul mysql... (vezi ca e netestata, am scris aici direct nu stiu cat de buna e)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
Mai bine ai verifica si magic_quotes_gpc() ca sa nu adaugi backslashes de 2 ori
iar str_replace accepta array-uri
Si cel mai bine, dupa parerea mea, e sa nu faci htmlentitites/htmlspecialchars inainte de insert pentru ca o sa fie string-urile mai mari... si daca cumva te razgandesti ?
sau daca vrei sa adaugi procesare de text, bbcodes, smiles, etc, nu o sa mearga corect.
Cel mai bine stochezi caracterele care pot fi luate drept HTML asa cum sunt si le procesezi la printare, real_escape_string totusi e necesar ca sa nu te trezesti cu SQL injection.
Cod: Selectaţi tot
function mssql_real_escape_string($string)
{
if(magic_quotes_gpc())
$string = stripslashes($string);
$escape = array
(
"\x00" => "\\x00",
"\n" => "\\n",
"\r" => "\\r",
"\x1a" => "\\x1a",
"\" => "\\",
"'" => "\'",
'"' => '\"',
);
return str_replace(array_keys($escape), array_values($escape), $string);
}
Si cel mai bine, dupa parerea mea, e sa nu faci htmlentitites/htmlspecialchars inainte de insert pentru ca o sa fie string-urile mai mari... si daca cumva te razgandesti ?
Cel mai bine stochezi caracterele care pot fi luate drept HTML asa cum sunt si le procesezi la printare, real_escape_string totusi e necesar ca sa nu te trezesti cu SQL injection.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori