/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kan man sortere inden skrivning til MySQL ~
Fra : Heidi og Lars


Dato : 23-01-07 10:41

Hej Alle.
Jeg har lavet en gæstebog på min hjemmeside, hvor jeg ved hjælp af
nedenstående lader folk skrive i gæstebogen. mit problem er at der er
enkelte botter der slipper igennem alligevel. Jeg vil gerne lave sådan at et
indlæg bliver sorteret fra hvis variablen $besked indeholder "<a href", da
alle spambeskeder indeholder den streng. Kan det lade sig gøre og i så fald
hvordan? Håber det er en let lille ting der skal skrives ind i koden
nedenfor...

På forhånd tak...
Lars

-----Kode-----
<?php
session_start();

/*
* Det næste bruger et lille script med at skulle skrive en
* kode efter et tilfældigt genereret billede
*/

if ($_SESSION['verify'] == strtoupper($_POST['auth'])) {
echo " ";
} else {
exit("Wrong antispam code");
}

require("./gbog-ting/mysql-funktioner.php");
require("./gbog-ting/indstillinger.php");

if(is_array($HTTP_POST_VARS)) {
$navn = $HTTP_POST_VARS['navn'];
$epost = $HTTP_POST_VARS['epost'];
$besked = $HTTP_POST_VARS['besked'];
} elseif (is_array($_POST)) {
$navn = $_POST['navn'];
$epost = $_POST['epost'];
$besked = $_POST['besked'];
}

function gbog_fejl($fejl) {

$generel_tekst = "<p>Please go back and change it.</p>";

$fejlmelding = "<ul>";

for($i=0;$i<count($fejl);$i++) {
$fejlmelding .= "<li>". $fejl[$i];
}

$fejlmelding .= "</ul>";

echo "Didn't quite like your input:" . $fejlmelding . $generel_tekst ;
exit;

}

function skriv_i_gbog($navn, $epost, $besked) {

$ip = getenv('REMOTE_ADDR');

$sql = "insert into gaestebog(navn,epost,besked,ip,tid)
values('$navn','$epost','$besked','$ip',now())";

aabn_forbindelse_og_vaelgdb();
sql_spoerg($sql);
luk_forbindelse();
}

/*
* Det næste for igen for at sikre mod tilfældige bots
*/

if(!ereg("Comments here", $comment)) {

exit(0);
}


if(!ereg("[A-z0-9]+", $navn)) {

$fejl[] = "You didn't write your name";

}

if(!ereg("[A-z0-9]+", $besked)) {

$fejl[] = "You didn't write any comment";

}

if(count($fejl) > 0) {
gbog_fejl($fejl);
}

skriv_i_gbog(addslashes($navn),addslashes($epost),addslashes($besked));

----Kode Slut----



 
 
Dennis Munding (23-01-2007)
Kommentar
Fra : Dennis Munding


Dato : 23-01-07 11:02

Hej Lars!
"Heidi og Lars" <koch@galnet.DANSK> skrev i en meddelelse
news:45b5d821$0$49202$14726298@news.sunsite.dk...
> Hej Alle.
> Jeg har lavet en gæstebog på min hjemmeside, hvor jeg ved hjælp af
> nedenstående lader folk skrive i gæstebogen. mit problem er at der er
> enkelte botter der slipper igennem alligevel. Jeg vil gerne lave sådan at
> et indlæg bliver sorteret fra hvis variablen $besked indeholder "<a href",
> da alle spambeskeder indeholder den streng. Kan det lade sig gøre og i så
> fald hvordan? Håber det er en let lille ting der skal skrives ind i koden
> nedenfor...
>
Du kan prøve at indsætte flg. efter dit tjek af verificerings-koden:

if(strpos($_POST['besked'],'<a href=') !== false ||
strpos($_POST['besked'],'http://') !== false) {
exit("No html-tags allowed!");
} else {

Det tjekker både om der er lavet link-tags, og om der er skrevet http:// -
det sidste har jeg med, da jeg selv prøvede at nøjes med blokering af
link-tags uden held. Spammerne begyndte bare at skrive alle links som ren
tekst...

Selv har jeg dog valgt at kombinere det med MySQL, så alle der har forsøgt
at benytte enten link-tags eller at skrive http:// i et indlæg automatisk
bliver blokeret fremover!

Det har indtil videre fungeret fint på mine 2 private hjemmesider...

> if ($_SESSION['verify'] == strtoupper($_POST['auth'])) {
> echo " ";
> } else {
> exit("Wrong antispam code");
> }

Altså her! Så det ser således ud:

if ($_SESSION['verify'] == strtoupper($_POST['auth'])) {
echo " ";
} else {
exit("Wrong antispam code");
} else {
if(strpos($_POST['besked'],'<a href=') !== false ||
strpos($_POST['besked'],'http://') !== false) {
exit("No html-tags allowed!");
} else {

// Resten af din kode her...


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...



Heidi og Lars (23-01-2007)
Kommentar
Fra : Heidi og Lars


Dato : 23-01-07 11:05

>>
> Du kan prøve at indsætte flg. efter dit tjek af verificerings-koden:
>
> if(strpos($_POST['besked'],'<a href=') !== false ||
> strpos($_POST['besked'],'http://') !== false) {
> exit("No html-tags allowed!");
> } else {

Takker... det vil jeg også lige prøve at lege med :)



Heidi og Lars (23-01-2007)
Kommentar
Fra : Heidi og Lars


Dato : 23-01-07 11:03

Har løst problemet ved at bruge:
if (preg_match("/href/i", $besked)) {
exit;
} else

takker for ulejligheden :)



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste