Avatar billede detail Nybegynder
03. august 2006 - 11:29 Der er 11 kommentarer og
1 løsning

stop spam fra Yahoo.com

Jeg har en gaestebog paa min hjemmesiden, som bliver spammet dagligt af @yahoo.com, kan jeg i mit mysql opsaet saette et spamfileter op som goer at alle der har en @yahoo.com mailadresse ikke kan oprette emner ?

Eller kan min hjemmeside udbyder klare dette problem - er kunde hos Cliche.dk
Avatar billede jaiz Nybegynder
03. august 2006 - 12:42 #1
du skal lave en if sætning rundt om din insert into sætning. Hvor du siger
if(username != *@yahoo.com)
{ insert into ræs }

dette er selvføgelig bare et eksemple men det måden og gøre det på alt afhænigt af hvad programmeringssprog du køre med...
Avatar billede Slettet bruger
03. august 2006 - 15:54 #2
Som jaiz antyder: NBej, du kan ikke sætte det op i MySQL, men er nødt til at gøre i dit gæstebogsprogram.
Avatar billede Slettet bruger
03. august 2006 - 15:54 #3
Tastefejl: 'NBej' skulle have været 'Nej'
Avatar billede detail Nybegynder
11. august 2006 - 16:38 #4
så er det store spørgsmål - hvor i min kode det skal sættes ind...

det er kodet i php

<?php


require("./mysql-funktioner2.php");
require("./design-funktioner2.php");
require("./indstillinger2.php");

#
# Vi skal have fat i vores variabler, uanset hvilken version af PHP der bruges
#

if(is_array($HTTP_GET_VARS)) {
  $start_nr = $HTTP_GET_VARS['start_nr'];
} elseif (is_array($_GET)) {
  $start_nr = $_GET['start_nr'];
}

#
# Når folk kigger på gBogen første gang har de ikke noget $start_nr, så vi giver dem et nul,
# så de starter med det nyeste indlæg.
# Hvis en skuummel gæst selv prøver at sætte $start_nr kan den ende med at blive under nul,
# når man bruger navigationen. Hvis den er under nul laver vi den også om til nul, så
# mysql ikke begynder at brokke sig over ugyldigt input
#

if(!$start_nr || $start_nr < 0) {
  $start_nr = 0;
}

#
# Udskriver den første stump HTML
#
#
# Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på
# men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi
# bruge når vi bygger "frem"- og "tilbage"-links.
#
# Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget
# de to forespørgsler.
#

$sql = "select id, navn, epost, web, date_format(tid, '%e/%c %Y, %H:%i') as tiden, besked from gaestebog2 order by tid desc limit $start_nr, $antal_ad_gangen";
$taeller_sql = "select count(*) as antal from gaestebog2";

#
# Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen.
# Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt.
#
# Abstraktionerne fra mysql-funktioner2.php sørger for alt det grove arbejde og fejlhåndtering - dejligt.
#

aabn_forbindelse_og_vaelgdb();
$resultat = sql_spoerg_og_faa_svar($sql);
$optaelling = sql_spoerg_og_faa_svar($taeller_sql);
luk_forbindelse();

#
# Så går vi igang med at bygge navigationen
# Først bruger vi extract til at få $antal ud til behandling.
# Vi looper ikke igennem resultatet, da vi ved der kun er een række,
# så vi tilgår den direkte ved $optaelling[0].
#

extract($optaelling[0]);

#
# Skal der laves et links til flere indlæg?
#

if($antal > ($start_nr + $antal_ad_gangen)) {
   
    $naeste_start_nr = $start_nr + $antal_ad_gangen;
    $naeste_nav = "<a class=\"skriv\" href=\"$PHP_SELF?start_nr=$naeste_start_nr\">N&aelig;ste</a>";

} else {

    $naeste_nav = "<span class=\"doedt-link\">N&aelig;ste</span>";

}

#
# Skal der laves link til forrige indlæg?
#

if($start_nr > 0 && ($start_nr - $antal_ad_gangen) < $antal) {

    $forrige_start_nr = $start_nr - $antal_ad_gangen;
    $forrige_nav = "<a class=\"skriv\" href=\"$PHP_SELF?start_nr=$forrige_start_nr\">Forrige</a>";

} else {

    $forrige_nav = "<span class=\"doedt-link\">Forrige</span>";

}

#
# Her sætter vi det hele sammen i en tabel vi kan bruge til at sætte ind på siden.
#

#$nav = "<table width=\"$tabel_bredde\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">
    #<tr><td align=\"left\" width=\"33%\">$forrige_nav</td>
    #<td align=\"center\" width=\"34%\"><a class=\"skriv\" href=\"skriv.php\">Skriv</a></td>
    #<td align=\"right\" align=\"33%\">$naeste_nav</td></tr>
    #</table>";
   
    $nav = "<center><table width=\"$tabel_bredde\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">
    <tr><td align=\"left\" width=\"33%\">$forrige_nav</td>
    <td align=\"center\" width=\"34%\"><a class=\"skriv\" href=\"skriv2.php\">Skriv i gæstebogen</a></td>
    <td align=\"right\" align=\"33%\">$naeste_nav</td></tr>
    </table></center>";

#
# Og skriver tabellen ud med det samme:
#

echo "$nav <p />";

#
# Her begynder det egentlig interesante - vi looper os igennem de enkelte indlæg
# og skriver dem ud til skærmen.
#
# Hvis forespørgslen ikke har returneret nogle resultater, springer vi alt dette over.
#

if(count($resultat) < 1) {

  echo "Der er ingen indl&aelig;g i g&aestebogen";

} else {

  for($i=0;$i<count($resultat);$i++) {

    #
    # Med extract får vi smidt værdierne i variabler
    #
   
    extract($resultat[$i]);

    #
    # Vi brugte addslashes() da vi lagde tingene i databasen så for at få det til
    # at se læseligt ud, fjerne vi dem igen med stripslashes()
    #

    $besked = stripslashes($besked);
    $navn = stripslashes($navn);
    $epost = stripslashes($epost);
    $web = stripslashes($web);

    #
    # Hvis der ikke må bruges HTML fjerner vi lige alle tags med htmlentities()
    #

    if($html_p != "t") {
        $navn = htmlentities($navn);
        $epost = htmlentities($epost);
        $web = htmlentities($web);
        $besked = htmlentities($besked);
    }

    #
    # For at vi får linjeskift i HTML også, bruger vi nl2br til at skifte alle \n
    # ud med <br>

    $besked = nl2br($besked);

    #
    # Vi laver et simpelt check: Hvis eposten indeholder et snabel-a, så laver
    # vi det til en mailto:
    #
    # Dette er dog ingen garanti for, at eposten er gyldig.
    #

    if(ereg("@", $epost)) {
        $navn = "<a class=\"gaestebog_overskrift\" href=\"mailto:$epost\">$navn</a>";
    }
   
    if(ereg("w", $web)) {
        $web2 = "<a class=\"gaestebog_overskrift\" href=\"http://$web\">web</a>";
    }

    #
    # Så er alt klart til browseren og vi spytter en tabel ud med denne besked.
    # Hvis du vil ændre markant i udseendet af din gæstebog, så er det
    # i blokken herunder det foregår. Du skal bare beholde de givne navne i
    # <input>-tagsene.
    #
    # Vi hopper lige ud af PHP-mode lidt, så vi er fri for at escape alle gåseøjnene.
    #

?>




    <center><table width="<?php echo $tabel_bredde; ?>" cellpadding="1" cellspacing="0" border="0">
        <tr><td class="gbog-baggrund" width="100%" align="center">

            <table border="0" cellpadding="8" cellspacing="0" width="100%">
                <tr><td class="gaestebog_overskrift" width="100%">Skrevet af: <?php echo $navn; ?>&nbsp;&nbsp;|&nbsp;&nbsp; <?php echo $web2; ?>&nbsp;&nbsp;|&nbsp;&nbsp;<?php echo $tiden; ?></td></tr>
            </table>

        </td></tr><tr><td class="gbog-baggrund" align="center" width="100%">

            <table border="0" cellpadding="8" cellspacing="0" width="100%">
                <tr><td class="gbog-bund" width="100%">
                <?php echo $besked; ?>
                </td></tr>
            </table>

        </td></tr>
    </table></center><p />

<?php

  #
  # Vi hopper tilbage i PHP-mode.
  #
  # Her slutter loopet og PHP springer tilbage og går hele turen igennem med den næste
  # besked. Når der ikke er flere indlæg i denne omgang går PHP videre.
  #

  }

  #
  # Endelig skriver vi frem- og tilbage-links på i bunden af siden også.
  #

  echo $nav;

  #
  # Her slutter if-else-konstruktionen der fanger, om der er nogle indlæg overhovedet.
  #

}

#
# Og spytter den sidste stump HTML ud.
#

echo bund();

?>
Avatar billede jaiz Nybegynder
12. august 2006 - 11:35 #5
ligner du skal kigge i mysql-funktioner2.php
Avatar billede jaiz Nybegynder
12. august 2006 - 11:36 #6
du skal lave en if sætning rundt om din mysql_query(INSERT INTO funktionen)
Avatar billede detail Nybegynder
14. august 2006 - 17:54 #7
Her er min mysql-funktioner2.php

<?php

function aabn_forbindelse_og_vaelgdb() {
  $server = "blalbla";
  $bruger = "blabla.dk";
  $kodeord = "bla";
  $database = "bla_bla_dk";

  if (!mysql_connect("$server","$bruger","$kodeord")) {
    udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
  }

  if(!mysql_select_db("$database")) {
    udskriv_fejl("Kunne ikke vælge databasen: $database");
  }

  if(!mysql_select_db("$database")) {
    udskriv_fejl("Kunne ikke vælge databasen: $database");
  }
 
 
}

function sql_spoerg_og_faa_svar($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Kunne ikke udføre: <em>$query</em>");
  }

  while($raekke = mysql_fetch_array($resultat)) {
    $resultat_array[] = $raekke;
  }

  return $resultat_array;
}

function sql_spoerg($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Kunne ikke udføre: <em>$query</em>");
  }
}

function luk_forbindelse() {
  if(!mysql_close()) {
    udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL!");
  }
}

function udskriv_fejl($fejl) {
  echo "<p>$fejl";

  if ($mysql_fejl = mysql_error()) {
    echo "<br>Fejlen er: <em>$mysql_fejl</em>";
  }

  exit;
}
?>

håber der er en løsning
Avatar billede mcgoat Nybegynder
14. august 2006 - 17:55 #8
Avatar billede detail Nybegynder
15. august 2006 - 08:11 #9
mcgoat - ville hellere du kom med et løsningsforslag, end side og følge mine tråde, og andre problemstillinger der ikke har med emnet at gøre
Avatar billede detail Nybegynder
15. august 2006 - 21:29 #10
jaiz - kan du give en hjælpen hånd, med mit problem ?
Avatar billede mcgoat Nybegynder
19. august 2006 - 11:10 #11
1: Jeg er i den anden tråd kommet med en meget bedre løsning, end hvad du er ude efter.

2: Du kan ikke have 2 * samme spørgsmål åbent, dette beregnes hvis for spam
Avatar billede detail Nybegynder
22. august 2006 - 18:26 #12
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester