Kjapp og trygg hosting for Wordpress

Godkjenne kommentarer - disable links i kommentarer

Tonny Kluften

Administrator
Jeg bruker et php skript som ikke behøver godkjenning av kommentarer, lett å spamme med andre ord. Jeg kan ikke php, er det enkelt å skrive inn noe som gjør at kommentarene må godkjennes i admin panelet?
Uansett vil jeg disable links i kommentarer, går det an å skrive inn en enkel kode i scriptet for å hindre at lenker blir vist i kommentarfeltet?

Hva er disable links på norsk?
 

clinton4

Medlem
Det er en enkel sak ja. Disable links betyr på norsk, slå av linker. Slår du av denne, vil ikke den som kommenterer kunne legge igjen en link til sin hjemmeside.
 

clinton4

Medlem
Det kommer jo an på hvordan koden din er bygget opp i dag. Hvis du kun ønsker at linken skal fjernes, så kan du sikkert bare fjerne den biten av asp/php koden. Litt vanskelig å gi noe konkret svar, uten å se noe kildekode.
 

Kenneth Dreyer

Well-Known Member
Nå vet ikke jeg hva slags phpscript det er snakk om her, men løsningen høres forsåvidt enkel ut..

Legg til et ekstra felt i mysql databasen som heter 'verified'. Verdiene her er 0 (ikke godkjent) og 1 (godkjent). Default verdi er 0, så hver gang noen skriver et innlegg må du godkjenne det. Du lager så en liten side som lister alle innlegg merket med "0", og når du trykker på godkjenn på en av dem blir 0 om til 1.

Enkelt og greit. Du kan lett betale en student for å gjøre dette på 30-60 min.
 

Keanu

Geek
Slik jeg tolker det har du problem med at folk kan putte inn html-kode i kommentarene, som derfor blir tolka som html.
Anbefaler å fikse det raskt om det er mulig å putte inn den koden man vil, siden det skaper er skummelt sikkerhetshull. :)

For å løse det i php, kan du bruke strip_tags på kommentaren i php før du putter den inn i databasen.
PHP: strip_tags - Manual
 

Tonny Kluften

Administrator
Gidder du å kikke her, hvor kan jeg bruke strip_tags?


-------------------------------------

<form action="savecomment.php" method="post" name="frmitem" id="frmitem" onsubmit="return Validation(this)" >
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="3" class="text"> <?php
$temp_user ="no";
$post_name = "";
$post_email = "";
$user_id = 0;

///If the user logged in
if(isset($_COOKIE["ses_code"])){
if($_COOKIE["ses_code"] == md5($_COOKIE["ses_username"].$_COOKIE["ses_id"]))
{
$temp_user ="yes";
$user_id = $_COOKIE["ses_id"];
$res_user = mysql_query("select * from ".TABLE_PREFIX."users where id = '".$_COOKIE["ses_id"]."'");
if($row_user = mysql_fetch_array($res_user))
{ /// Storing logged user's email and password
$post_name = $row_user["first_name"];
$post_email = $row_user["email"];
}
}
}
?>


<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="33%">Ditt navn <span class="required">*</span></td>
<td width="67%"><input name="post_name" class="textbox" type="text" size="40" value="<?php echo $post_name;?>" <?php if($temp_user =="yes") echo "readonly='1'";?>></td>
</tr>
<tr>
<td>Din epost <span class="required">*</span></td>
<td><input name="post_email" class="textbox" type="text" size="40" value="<?php echo $post_email;?>" <?php if($temp_user =="yes") echo "readonly='1'";?>/></td>
</tr>
<tr>
<td valign="top">Kommentar<span class="required">*</span></td>
<td><textarea name="comment" cols="37" rows="8" class="textbox"></textarea></td>
</tr>
<tr>
<td>Skriv inn verifikasjonskoden :<span class="required">*</span></td>
<td><img src="picture.php" alt="Image verification" name="vimg" id="vimg" />
<br />
<input type="text" size="16" name="key" class="textbox" id="key" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" class="button" name="Submit" value="Send" />
<input type="hidden" name="recipe_id" value="<?php echo $id;?>" />
<input type="hidden" name="user_id" value="<?php echo $user_id;?>" /> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
 

Keanu

Geek
Du må i såfall poste koden fra savecomment.php, det er der jeg antar kommentaren blir lagret.
Der finnes vel tilsvarende for JS også, men avanserte brukere vil kunne gå forbi det, og boter kjører vel sjelden JS.
 

Mr Vest

Sjefen over alle sjefer!
Er det ikke litt lettere å hjelpe om dere vet hvilket script det faktisk dreier seg om?
 

Tonny Kluften

Administrator
Det er et helt ukjent script.

Her er hele savecoment.php:



<?php
function getVars()
{
$retVar="";
global $_POST;
if(isset($_POST))
{
foreach($_POST as $key=>$value)
{
if($key!="key")
{
if($retVar!="")$retVar.="&";
$retVar.="$key=".urlencode($value);
}
}
}
return $retVar;
}
session_start();
if (!strcasecmp($_POST["key"], $_SESSION["verification_key"]) == 0) {
header("location:view_recipe.php?failed=err_var&id=".$_POST["recipe_id"].(getVars()));
exit();
}
include("admin/connection.php");

$post_name =$_POST["post_name"];
$post_email = $_POST["post_email"];
$comment = $_POST["comment"];
$recipe_id = $_POST["recipe_id"];
$user_id = $_POST["user_id"];

$sql = "insert into ".TABLE_PREFIX."comments set
post_name = '$post_name',
post_email = '$post_email',
comment = '$comment',
recipe_id = '$recipe_id',
user_id = '$user_id',
post_date = CURRENT_DATE()";
mysql_query($sql);

header("Location:view_recipe.php?id=$recipe_id&comentpost=su");
?>
 

clinton4

Medlem
Bytt ut

PHP:
$comment = $_POST["comment"];

med

PHP:
$comment = strip_tags($_POST["comment"]);

Jeg er usikker på om strip_tags vil løse problemet, men det er jo verdt et forsøk.
 
Sist redigert:

Keanu

Geek
Gjør som clinton4 sier. Det vil gjøre om f.eks:
Nice site! Check out <a href="http://www.suspektside.com">my site</a> as well.
til
Nice site! Check out my site as well.

Merk at dette ikke forhindrer spam, bare fjerner lenker. For godkjenning anbefaler jeg Kenneths tips med en boolsk variabel som sier om den er godkjent eller ikke.
 

clinton4

Medlem
Kom til å tenke på en ting. Hva om jeg f.eks skrev følgende innlegg:

Kul side, sjekk ut min side http://vinnting.no/

Da ville jo ikke strip_tags være til nytte her, og siden jeg har skrevet http:// forran, så ville vel denne ha blit vist som en link i nettleseren, eller?
 
Sist redigert:
Topp