webForumDet fria alternativet
Logga in / Bli medlem

"slash"-problem i gästbok

PHP

9 svar · 437 visningar · startad av silfver

Medlem sedan apr. 200312 679 inlägg
Trådstart#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

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

Ska endast ta bort slashes.

Medlem 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);
  } 
 } 
?>
Medlem 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.

Medlem sedan apr. 200312 679 inlägg
#5

Hur menar du Peeer?

Medlem 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.

Medlem sedan juni 20006 031 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.

Medlem 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 ;)

Medlem 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.

Medlem sedan apr. 200312 679 inlägg
#10

Peeer is the greatest :D

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)