Tarkoitukseni olisi tehdä tiettyjen sanojen esto lomakekenttään (kenttä esim. $url).
Tarvitsisin php-koodin, jossa luetaan tekstitiedosto. Jos tiedostosta löytyy lomakkeen kentässä oleva sana, niin silloin tulee virheilmoitus, jos sanaa ei ole, niin hommaa jatkuu.
Olen tehnyt estoja suoraan koodiin preg_matchillä, mutta voisi olla ehkä järkevämpi koostaa ne yhteen tiedostoon, joka tarkistetaan aina lähetettäessä.
Alla olevan koodin löysin, mutta saisiko tuosta jatkettua? Ko. koodi nyt vain tulostaa tiedoston
<?php $file = fopen("testi.txt", "r"); while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
Mod. lisäsi kooditagit
Jos lomakekentän sana tai osa siitä on tekstitiedostossa niin viestiä ei voi lähettää. Saan kyllä tulostettua koko tiedoston, mutta kuinka saan etsittyä tiedostosta jotain tiettyä sanaa?
Katso noista linkitetyistä oppaista neuvoa, miten noita käytetään. Tässäkin olet saanut jo muutaman oikein hyvänkin vinkin esim. tuo if-lause.
Tässä sinulle kommentoitu esimerkki:
<?php //$pahat_sanat[] sisältää kaikki pahat sanat. Tiedostossa yksi sana per rivi, pienellä kirjoitettuna $pahat_sanat = explode("\n", file_get_contents("pahat_sanat.txt")); //Erotellaan viestistä kaikki sanat ja pienennetään ne $message = $_POST["viesti"]; $viesti = strtolower(explode(" ", $message)); //Käydään $viesti[] taulukko läpi for($i = 0; $i < sizeof($viesti); $i++) { //Jos $viesti[$i] on taulukossa $pahat_sanat[] if(in_array($viesti[$i], $pahat_sanat)) { die($viesti[$i], " on paha sana!"); } } //Jos päästiin näin pitkälle, niin ei tullut yhtään pahaa sanaa //Lähetetään viesti mail("oma_osoite@palvelmeni.fi", "Viesti kotisivuilta", $message); //Mennään kiitossivulle header("Location: kiitos.php"); ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.