Just nu i M3-nätverket
Gå till innehåll

stoppa spam i gästbok


flodo

Rekommendera Poster

Hej

har lite problem som många andra med spam i gästboken.

nu tänkte jag att jag skulle fixa en funktion som man skriver in en kod i en textruta. det ska inte va nån bild elller nån slumpgenerator, koden ska va den samma hela tiden hade jag tänkt. Skulle vilja ha lite hjälp med kod, kan inte mycke om asp själv så.

de här filerna har min gästbok : gastbok.asp, admin.asp och en access databas.

skriv gärna ner kod och vart å i vilka filer de ska läggas.

är tacksam för all hjälp jag får

 

Länk till kommentar
Dela på andra webbplatser

ok, men då e det ju hur lätt som helst!:)

 

bara o ta en if-sats o kolla om man har skrivit in det rätta ordet.

du kan ha kontrollen på den sidan som gastbok.asp skickar till.

 

tex

if request.form("[i]faltnamnet[/i]") = "[i]Kod-ordet[/i]" then

osv..

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

Se om jag är online:

http://www.xfire.com/profile/darkluna/

// Codler

 

Länk till kommentar
Dela på andra webbplatser

hej

tack för att du tar dig tid, men ska man skriva nå mer efter eller där du skrev o.s.v, kan typ inget om asp, fick det inte att funka i alla fall. gick att skicka även fast jag inte hade lösenordet

 

Länk till kommentar
Dela på andra webbplatser

Ska det inte gå att skicka inlägget, om man har fel kod?

Isåfall måste du andvända dig av JavaScript istället.

 

Länk till kommentar
Dela på andra webbplatser

Micke_skane

Att enbart använda javascript för att säkra spam är lika säkert som, citerar någon på Eforum :) :

"Hubba Bubba i en kiosk nära en högstadieskola"

Visst kan man använda javascript men man ska verkligen kolla på serversidan att allt är som det ska innan man skickar inlägget.

Man kan ju stänga av javascript...

Det finns massor av olika enkla varianter för det.

 

Ett ex:

Slumpa ett "enkelt" lösenord och lägg det som en text på hemsidan samt som en Session-variabel.

Be dem sen skriva in lösenordet i ett fält och kolla så att värdet är rätt.

 

Annars kan som du redan tänkt använda ett enda bestämt värde och be dem fylla i det.

 

Men som sagt, det finns flera andra varianter!

 

Länk till kommentar
Dela på andra webbplatser

Nu har jag inte testat om det är error i denna kod. Jag gör det om du inte får det att fungera...

 

Lägg detta i head:

<SCRIPT LANGUAGE="JavaScript">
<!--
function kontrollera_kod()
{
       if (document.ditt_formular.kod.value == "Din jätte hemliga kod")
       {
       alert("Du har angett fel kod, du kan tyvärr inte posta ett inlägg då.");
       return false;
       }
}
//-->
</SCRIPT>

 

Din gästboks formulärskod (det röda är det som du ska lägga till):

<FORM ACTION="gastbok.asp?act=posta" METHOD="post" [color="#ff0000"]onSubmit="return kontrollera_kod()" NAME="ditt_formular"[/color]>
<!-- Alla fält som man ska fylla i för att göra ett inlägg -->
<B>Fyll i koden:</B>[color="#ff0000"]<INPUT TYPE="text" NAME="kod">[/color]
</FORM>

 

Det kan vara fel någonstans, jag är inte expert på JavaScript.

 

Länk till kommentar
Dela på andra webbplatser

Ja, egentligen ska man ju göra så. Men det blir åtminstonde lite jobbigare när spammarna måste fylla i en kod.

Om jag hade gjort det skulle jag nog kontrollerat koden på Serversidan. Fast flodo får välja.

 

Länk till kommentar
Dela på andra webbplatser

jag tror jag avstår javascriptet eftersom det inte verkar funk så bra som det sägs.

men kan någon förklara hur jag ska göra på det sättet jag mena, med att ha ett enda bestämt värde som man ska fylla i.

 

Länk till kommentar
Dela på andra webbplatser

du gör som jag beskrev förut:

 

if request.form("[i][color="#ff0000"]faltnamnet[/color][/i]") = "[i][color="#ff0000"]Kod-ordet[/color][/i]" then

den koden kan du ha högst upp

sedan avslutar du med:

end if

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

Se om jag är online:

http://www.xfire.com/profile/darkluna/

// Codler

 

Länk till kommentar
Dela på andra webbplatser

koden ser ut så här nu, kan du säga vad som är fel??

 

 

 

 

<form action="?sida=skicka" method="post" name="nospam">
         <p>Namn<br />
           <input name="GBnamn" type="text" id="GBnamn" size="80">
           <br />
         Epost<br />
         <input name="GBepost" type="text" id="GBepost" size="80">
         <br />
         Hemsida<br />
         <input name="GBhemsida" type="text" id="GBhemsida" size="80">
         <br />
         Meddelande<br />
         <textarea name="GBmess" cols="80" rows="8" id="GBmess"></textarea>
         <br>
           <br>          
           Skriv<strong> 123 </strong>h&auml;r <span class="note">(antispam)</span>,<br>
         m&aring;ste fyllas i<br>
         <input name="GBnospam" type="text" class="text">
         </input>
         &nbsp;<br>
         <br>
         <input type="submit" value="Skicka" name="send">
           <br />
           <br />
         </p>
     </form>
     <span class="rubrik">Gästboksinlägg</span><br />
     <br />

<%
 If Request.Form("GBnospam") = "123" Then
 End If
%>

 

Länk till kommentar
Dela på andra webbplatser

Det är inte hela koden, det måste ligga något i stil med

If Request.QueryString("sida") = "skicka" then

Innan.

 

Och i direkt under det ska du lägga:

If Request.Form("GBnospam") = "123" Then
Response.Write "Du skrev in fel kod. Gå <A HREF='gastbok.asp'>tillbaka</A> och testa igen"
Else

Sedan kommer koden som lägger till posten i databasen...

 

Och före "If Request.QueryString("sida") " avslutas lägger du till:

End If

 

Hoppas att du förstod

 

Länk till kommentar
Dela på andra webbplatser

tack för hjälpen

men får ett felmeddelande i webläsaren som ser ut så här:

 

Microsoft VBScript compilation error '800a0409'

 

Unterminated string constant

 

/gastbok.asp, line 99

 

Response.Write "Du skrev in fel kod. Gå <A HREF='gastbok.asp'>tillbaka</A> och

------------------------------------------------------------------------------^

 

 

 

min kod ser ut så här nu:

 

<% If Request.QueryString("sida") = "" Then 
     End If

     If Request.Form("GBnospam") = "123" Then
     Response.Write "Du skrev in fel kod. Gå <A HREF='gastbok.asp'>tillbaka</A> och
          testa igen"
     Else
%>   

       <span class="rubrik">Skriv i g&auml;stboken</span><br />
       <br />
       <form action="?sida=skicka" method="post" name="nospam">
         <p>Namn<br />
           <input name="GBnamn" type="text" id="GBnamn" size="80">
           <br />
         Epost<br />
         <input name="GBepost" type="text" id="GBepost" size="80">
         <br />
         Hemsida<br />
         <input name="GBhemsida" type="text" id="GBhemsida" size="80">
         <br />
         Meddelande<br />
         <textarea name="GBmess" cols="80" rows="8" id="GBmess"></textarea>
         <br>
           <br>          
           Skriv<strong> 123 </strong>h&auml;r <span class="note">(antispam)</span>,<br>
         m&aring;ste fyllas i<br>
         <input name="GBnospam" type="text" class="text">
         </input>
         &nbsp;<br>
         <br>
         <input type="submit" value="Skicka" name="send">
           <br />
           <br />
         </p>
     </form>
     <span class="rubrik">Gästboksinlägg</span><br />
     <br />

 

Länk till kommentar
Dela på andra webbplatser

[log]

<% If Request.QueryString("sida") = "skicka" Then
If not Request.Form("GBnospam") = "123" Then
Response.Write("Du skrev in fel kod. Gå <A HREF='gastbok.asp'>tillbaka</A> och
testa igen")
else
response.write("Du skrev in rätt kod")
end if
Else
%>

<span class="rubrik">Skriv i g&auml;stboken</span><br />
<br />
<form action="?sida=skicka" method="post" name="nospam">
<p>Namn<br />
<input name="GBnamn" type="text" id="GBnamn" size="80">
<br />
Epost<br />
<input name="GBepost" type="text" id="GBepost" size="80">
<br />
Hemsida<br />
<input name="GBhemsida" type="text" id="GBhemsida" size="80">
<br />
Meddelande<br />
<textarea name="GBmess" cols="80" rows="8" id="GBmess"></textarea>
<br>
<br>
Skriv<strong> 123 </strong>h&auml;r <span class="note">(antispam)</span>,<br>
m&aring;ste fyllas i<br>
<input name="GBnospam" type="text" class="text">
</input>
&nbsp;<br>
<br>
<input type="submit" value="Skicka" name="send">
<br />
<br />
</p>
</form>
<span class="rubrik">Gästboksinlägg</span><br />
<br />

<% End If %>

[/log]

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

Se om jag är online:

http://www.xfire.com/profile/darkluna/

// Codler

 

Länk till kommentar
Dela på andra webbplatser

nu kommer gästboken upp i alla fall, men det står innnan man tryckt in koden att den ä fel. å dä går fortfarande att skicka med eller utan kod, och med vilken kod som helst.

 

<% 
 If Request.QueryString("sida") = "" Then
 If not Request.Form("GBnospam") = "123" Then
 Response.Write("Du skrev in fel kod. Gå <A HREF='gastbok.asp'>tillbaka</A> och testa igen")
 else
 response.write("Du skrev in rätt kod")
 end if
%>  

 

Den fungerar inte om man skriver skicka här:

 

If Request.QueryString("sida") = "[b]Skicka[/b]" Then

 

det har funkat utan innan så det kanske inte behövs eller?

 

Länk till kommentar
Dela på andra webbplatser

vad för felmeddelande står det?

...

If [b]NOT[/b] Request.QueryString("sida") = "" Then

...

 

får du fram ett meddelande om "Du skrev in rätt/fel kod" när man trycker på skicka?

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

Se om jag är online:

http://www.xfire.com/profile/darkluna/

// Codler

 

Länk till kommentar
Dela på andra webbplatser

det blir inget felmeddelande om man skrev in skicka, det ä bara bakgunden på gästboken som är kvar..

och det blir inget felmeddelande om man skriver rätt/fel kod, det står bara: du skrev in fel kod Gå tillbaka... längst upp i gästboken innan man skrivit nåt.

 

Länk till kommentar
Dela på andra webbplatser

det står bara: du skrev in fel kod Gå tillbaka... längst upp i gästboken innan man skrivit nåt.

 

det borde inte bli så, har du laggt till det jag skrev sist?

If NOT Request.QueryString("sida") = "" Then

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

Se om jag är online:

http://www.xfire.com/profile/darkluna/

// Codler

 

Länk till kommentar
Dela på andra webbplatser

Micke_skane
Den fungerar inte om man skriver skicka här:

Där är skillnad på Skicka och skicka.

Har du testat med bara gemener i din If-sats för QueryStringen?

 

Har testat koden och den fungerar, så får du inte rätt på det så har du kopierat fel ifrån Eforum eller så är där annan kod som stör...

 

[inlägget ändrat 2007-03-02 17:59:10 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...