S silfver Medlem sedan apr. 2003 12 679 inlägg Trådstart 7 jan. 2004 18:05 #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("|", "|", $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
Matte Medlem sedan aug. 2000 2 975 inlägg $msg = stripslashes($msg);
Ska endast ta bort slashes.
S silfver Medlem sedan apr. 2003 12 679 inlägg 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("|", "|", $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);
}
}
?>
Peeer Medlem sedan mars 2002 5 907 inlägg Prova att köra med stripslashes när du skriver ut innehållet istället för när du sparar den.
Peeer Medlem sedan mars 2002 5 907 inlägg 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.
P Pedda Medlem sedan juni 2000 6 031 inlägg Spara inlägget utan stripslashes. (som du gjorde innan)
Sen kör du stripslashes innan du skriver ut inlägget istället.
S silfver Medlem sedan apr. 2003 12 679 inlägg Alltså, jag hajar inte 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("|", "|", $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
Peeer Medlem sedan mars 2002 5 907 inlägg <?
$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.