webForumDet fria alternativet

"slash"-problem i gästbok

9 svar · 437 visningar · startad av silfver

silfverMedlem sedan apr. 200312 679 inlägg
#1

Försökt att söka lite på "stripslash" men jag hittade inget som jag förstod något utav. Men mitt problem är när folk skriver i min gästbok så skapas oönskade "slash"-tecken.

"hejsan" resulterar i
\"hejsan\" osv.

Här är koden (jag antar att lösningen ligger i den)

<?
if (isset($_GET["do"]))
{
  if ($_GET["do"] =="new")
  {
   $host = gethostbyaddr($REMOTE_ADDR); 
   $ip = gethostbyname($REMOTE_ADDR); 
   $skrivet = date("Y/m/d  H:i");                            
   $msg= strip_tags($_POST["msg"], '<b><i><u><font>'); 
   $msg = preg_replace("/(\r\n|\r|\n)/", "<br>", $msg);
   $msg = str_replace("|", "&#124;", $msg); 
   $cfile = "../gb.txt"; 
   $fp = fopen($cfile, "r+"); 
   $content = fread($fp, filesize($cfile)); 
   rewind($fp); 
   fwrite($fp, "{$_POST["namn"]} | $msg | $skrivet | $ip\n$content"); 
   fclose($fp);
  } 
 } 
?>

testade att lägga in:
$msg stripslashes($str);

men då tar den bort "hejsan" och all text som är imellan citationstecken, och det vill jag ju inte.

tacksam för alla svar
mvh

MatteMedlem sedan aug. 20002 975 inlägg
#2
$msg = stripslashes($msg);

Ska endast ta bort slashes.

silfverMedlem sedan apr. 200312 679 inlägg
#3

funkar inte.

<?
if (isset($_GET["do"]))
{
  if ($_GET["do"] =="new")
  {
   $host = gethostbyaddr($REMOTE_ADDR); 
   $ip = gethostbyname($REMOTE_ADDR); 
   $skrivet = date("Y/m/d  H:i");                            
   $msg= strip_tags($_POST["msg"], '<b><i><u><font>'); 
   $msg = preg_replace("/(\r\n|\r|\n)/", "<br>", $msg);
   $msg = str_replace("|", "&#124;", $msg); 
   $msg = stripslashes($msg);
   $cfile = "../gb.txt"; 
   $fp = fopen($cfile, "r+"); 
   $content = fread($fp, filesize($cfile)); 
   rewind($fp); 
   fwrite($fp, "{$_POST["namn"]} | $msg | $skrivet | $ip\n$content"); 
   fclose($fp);
  } 
 } 
?>
PeeerMedlem sedan mars 20025 907 inlägg
#4

Prova att köra med stripslashes när du skriver ut innehållet istället för när du sparar den.

silfverMedlem sedan apr. 200312 679 inlägg
#5

Hur menar du Peeer?

PeeerMedlem sedan mars 20025 907 inlägg
#6

Med koden ovan sparar du meddelandena till textfilen (eller ser jag helt fel?). Någonstans läser du av texten från textfilen och skriver ut den på skärmen, om du kör stripslashes() där istället så borde det kanske gå lite bättre.

PeddaMedlem sedan juni 20006 032 inlägg
#7

Spara inlägget utan stripslashes. (som du gjorde innan)
Sen kör du stripslashes innan du skriver ut inlägget istället.

silfverMedlem sedan apr. 200312 679 inlägg
#8

Alltså, jag hajar inte :P Har inte lärt mig php än...

<?
if (isset($_GET["do"]))
{
  if ($_GET["do"] =="new")
  {
   $host = gethostbyaddr($REMOTE_ADDR); 
   $ip = gethostbyname($REMOTE_ADDR); 
   $skrivet = date("Y/m/d  H:i");                            
   $msg= strip_tags($_POST["msg"], '<b><i><u><font>'); 
   $msg = preg_replace("/(\r\n|\r|\n)/", "<br>", $msg);
   $msg = str_replace("|", "&#124;", $msg); 
   $msg = stripslashes($msg);
   $cfile = "../gb.txt"; 
   $fp = fopen($cfile, "r+"); 
   $content = fread($fp, filesize($cfile)); 
   rewind($fp); 
   fwrite($fp, "{$_POST["namn"]} | $msg | $skrivet | $ip\n$content"); 
   fclose($fp);
  } 
 } 
?> 
<script type="text/javascript">
function validateForm() {
    if (document.f.namn.value=="") {
        alert("Du måste fylla i ett namn.");
        return false;
    } else if (document.f.msg.value==""){
        alert("Du måste fylla i ditt meddelande.");
        return false;    
    }
}
</script>

<form name="f" action="index2.php?sida=gastbok&_13=fet&topic=Gästbok&start&do=new" method="post" onSubmit="return validateForm()" > 
Ditt namn:<br>
<input type="text" name="namn" class="box"><br>
<br>
Meddelande:<br>
<textarea name="msg" cols="50" rows="8" class="box"></TEXTAREA><br>
<br>
<input  type="submit" value="Skicka" class="knapp" onFocus="this.blur()"> 
</form> 

<table cellspacing=0 cellpadding=2 border=0 width=100%> 
<table cellspacing=0 cellpadding=2 border=0 width=100%> 
<? 

$antal = 5;
if (!isset($_GET["c"]))
    $count = 0;
else
    $count = intval($_GET["c"]);

$gb = file ("../gb.txt");
$total = count($gb);  
$min = $count+1;
$max = $antal + $count;
if($max > $total)
    $max = $total;

if($min==1)
    echo "Förgående";
else
{
    $temp = $min-$antal-1;
    if($temp < 0)
        echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=0\">Förgående</a></b>";
    else
        echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=$temp\">Förgående</a></b>";
    
} echo " | ";
if ($max < $total)
    echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=$max\">Nästa</a></b>";
else
    echo "Nästa";
for ($count; $count < $max; $count++) {
    $value = explode("|",$gb[$count]);
    echo "
        <td  bgcolor=#FFFFFF><i>$value[2] [$value[3]]</i></td><tr> 
        <td><b>Från:</b> $value[0]</td><tr>    
        <td>$value[1]</td><tr>
        <td><hr no shade size=1 color=#999999></td><tr>";
    } 
echo "<br><br>";  
echo "</table><br>Visar kommentar $min till $max av totalt $total\n."; 

?>

där är koden, kan ni hjälpa mig?
Peeer du känner säkert igen den ;)

PeeerMedlem sedan mars 20025 907 inlägg
#9
<? 

$antal = 5;
if (!isset($_GET["c"]))
    $count = 0;
else
    $count = intval($_GET["c"]);

$gb = file ("../gb.txt");
$total = count($gb);  
$min = $count+1;
$max = $antal + $count;
if($max > $total)
    $max = $total;

if($min==1)
    echo "Förgående";
else
{
    $temp = $min-$antal-1;
    if($temp < 0)
        echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=0\">Förgående</a></b>";
    else
        echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=$temp\">Förgående</a></b>";
    
} echo " | ";
if ($max < $total)
    echo "<b><a href=\"index2.php?sida=gastbok&_13=fet&topic=Gästbok&c=$max\">Nästa</a></b>";
else
    echo "Nästa";
for ($count; $count < $max; $count++) {
    $value = explode("|",$gb[$count]);
    [b]$user = stripslashes($value[0]);
    $message = stripslashes($value[1]);[/b]
    echo "
        <td  bgcolor=#FFFFFF><i>$value[2] [$value[3]]</i></td><tr> 
        <td><b>Från:</b> [b]$user[/b]</td><tr>    
        <td>[b]$message[/b]</td><tr>
        <td><hr no shade size=1 color=#999999></td><tr>";
    } 
echo "<br><br>";  
echo "</table><br>Visar kommentar $min till $max av totalt $total\n."; 

?>

Något sådant här borde fungera tycker jag. Observera att det här bara är den sista biten av koden. Formuläret och koden du hade innan forumläret ska vara som du hade den från början.

silfverMedlem sedan apr. 200312 679 inlägg
#10

Peeer is the greatest :D

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