webForumDet fria alternativet

Kan inte posta med apostrof i texten.

PHPur PHP

6 svar · 360 visningar · startad av colione

Medlem sedan juni 20014 421 inlägg
Frågan#1

Hej!

Jag har tagit över en större php-applikation för en ideell förening. Jag har nu flyttat projektet till en ny server, dock så stöter jag på patrull.
När folk ska posta i forumet/uppdatera sin profil buggar sidan ur om de har apostrof ' med i texten någonstans, inlägget postas helt enkelt inte. Exakt samma applikatio fungerade utmärkt på en annan server. Jag kör PHP i verision 5.2.1.
Jag har provat att ha följane i .htaccess filen för sidan:
php_value magic_quotes_gpc off
php_value safe_mode off
även:
php_flag magic_quotes_gpc off
php_flag safe_mode off

Har även provat att sätta allt till on för sakens skull. Jag vet att magic_quotes är av default i php 5.2.1

Koden som postar ett inlägg ser ut som följer:

include "sql.php";
$inlagg = strip_tags($_POST['inlagg']);
$topic = strip_tags($_POST['topic']);

$inlagg =  str_replace("[b]","<b>",$inlagg);
$inlagg =  str_replace("[/b]","</b>",$inlagg);
$inlagg =  str_replace("[u]","<u>",$inlagg);
$inlagg =  str_replace("[/u]","</u>",$inlagg);

$inlagg = preg_replace('#(http://\S+)#', '<a href="$1" target="_new">$1</a>', $inlagg);

mysql_query("INSERT INTO for_reg (fid,user,topic,inlagg,time,reply) VALUES('{$_POST['forumid']}','{$_COOKIE['cookie_id']}','$topic','$inlagg','" . time() .  "','" . time() .  "')",$link);
mysql_close($link);

Någon som har nåt tips?

Medlem sedan juni 20015 009 inlägg
#2

Vet inte om du kan påverka magic_quotes direkt i htaccess. Men i vilket fall som helst om man kör med mysqli (improved) behöver man inte köra addslashes på sina frågor men då du kör med vanliga mysqlfunktionerna bör du köra med addslashes på dina strängar och sedan stripslashes när du hämtar din data. Det bör åtgärda felet med att den knäppar sig med '. Antagligen blir det samma med "?

/R

mysql_query("INSERT INTO for_reg (fid,user,topic,inlagg,time,reply) VALUES('" . addslashes($_POST['forumid']) . "','" . addslashes($_COOKIE['cookie_id']) . "','" . addslashes($topic) . "','" . addslashes($inlagg) . "','" . time() .  "','" . time() .  "')",$link); 
mysql_close($link);

Fördel om man har en funktion som man kör alla variablar genom (de som ska in i dbn dvs.). Som tar hand om konstiga tecken och gör om åäö till htmlkoder etc. :)

Medlem sedan dec. 19996 721 inlägg
#3

Hur funkar det om du kör gamla goda addslashes eller mysql_real_escape_string i stället?

Medlem sedan juni 20014 421 inlägg
#4

Nej, det är det som är det märkliga. Citationstecken och backslash är helt problemfria att använda, det är sjukt...
Och jag vet att jag borde escapea inputen bättre, applikationen är inte skriven av mig och den ska bytas ut mot ett open source cms senare hyffsat snart. Applikationen har fungerat på en php 5.2.1 installation innan också.

Medlem sedan juni 20014 421 inlägg
#5

Jag har nog hitta felet. magic_quotes_gpc var avstängt och gick inte att slå på via htaccess. Jag måste skapa mig en egen php.ini först. Jag återkommer med resultat.

Medlem sedan mars 20032 667 inlägg
#6

colione skrev:

Jag har nog hitta felet. magic_quotes_gpc var avstängt och gick inte att slå på via htaccess. Jag måste skapa mig en egen php.ini först. Jag återkommer med resultat.

Helt korrekt. :)

magic_quotes_gpc kan du bara ändra med htaccess eller ini_set() i PHP <= 4.2.3.

Medlem sedan juni 20014 421 inlägg
#7

Där ser man, det hade jag missat i manualen. :) Men då har jag nog pinpointat felet helt och hållet.

139 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)