Eli miten voin estää botteja laittamasta viestejä? Foorumilleni tulee mitä ilmeisemmin perinteisiä botti viestejä, niillä ei ole tunnusta eikä mitään, enkä siksi ymmärrä miten ne pääsevät läpi, koska viestiä ei pysty lähettämään jos ei ole tunnusta, mutta kuitenkin:
Tuossa linkki yhteen foorumini kategorioista joissa noita aiheita / viestejä on.
Koodisi on yhtä reikäjuustoa. Se ei tarkista suojauksia mitenkään, luotat 100% siihen mitä käyttäjä/botti lähettää. Tietokantasi pystyisi vaikka tyhjentämään täydellisesti. Ja sinulla on suojaamattomia huoneita, joille voi pistää ihan mitä vaan.
Suosittelen joko käyttämään valmista foorumisoftaa (erittäin lämpimästi) tai sitten lukemaan hyvin paljon PHP:sta, MySQL:stä ja tietoturvasta. Monet näistä ongelmistasi ovat ihan perustason juttuja, jotka on pakko osata jos meinaa tehdä mitään webbijuttuja.
Sitten kun perustason tietoturva on kunnossa, niin voit alkaa tutkia bottien estämistä.
Kyllä kai esim tuolta sivulta
http://pelila.com/gameheaven/foorumi/
voi kuka tahansa lähetellä viestejä.
Huoh... Eikös tätä olla jo käyty täällä. kuiteskin:
capcha.php
<?php header("Content-type: image/png"); $merkit = "abcdefghijlmnopqrstuvwxyz123456789"; $merkkijono = ""; for ($i = 0; $i < 10; $i++) { $merkkijono .= $merkit[rand(0, 33)]; } $kuva = imagecreate(124, 38); $tausta = imagecolorallocate($kuva, 255, 255, 255); $teksti = imagecolorallocate($kuva, 0, 0, 0); $viiva = imagecolorallocate($kuva, 0, 0, 255); imagestring($kuva, 5, 10, 10, $merkkijono, $teksti); imageline($kuva, 12, 12, rand(0, 40), rand(0, 40), $viiva); imageline($kuva, 24, 24, rand(0, 40), rand(0, 40), $viiva); imageline($kuva, 36, 36, rand(0, 40), rand(0, 40), $viiva); imagepng($kuva); imagedestroy($kuva); session_start(); $_SESSION["varmistus"] = "$merkkijono"; ?>
send.php
<form action="getmessage.php" name="messagesend" method="post"> Viesti: <br><textarea name="message"></textarea><br><br> <span class="captcha_text">Captcha varmistus</span><br> <iframe src="captcha.php" width="150" height="60" name="captcha"></iframe><br><br> <input type="text" name="captcha"><br><br> <input type="submit" name="send" value="Post message"> </form>
getmessage.php
<?php $viesti = $_POST["message"]; $send_captcha = $_POST["captcha"]; session_start(); $captcha = $_SESSION["varmistus"]; if($logged) { if($send_captcha == "$captcha") { if(!empty($viesti)) { //tähän tietokantaan tallentamiset yms. echo "Kiitos viestistäsi"; }else { echo "Et ooo sisällä"; } }else { echo "Captcha mennyt sul väärin."; } }else { echo "Sun viestis näyttää olevan tyhjä..."; } ?>
Toi kuva on iframella et toimis varmasti. itellä ei toiminu ku hain kuvana :DDD Tuo koodi on sit VJGO Tubesta haettu suurimmilta osilta. Saat käyttää ihan ilman (C) merkkejä ja ilman lähteen mainitsemista. En testannut muokautettua koodia mut pitäisi toimia. PS. Noi sivun tyylit on pahasti pielessä...
Edit: Demo: http://vjgo.arkku.net/mediaplayer/login?action=1
Siis sul ei toimi, jos sul on iframen tilalla alla oleva koodi?
<img src="http://vjgo.arkku.net/mediaplayer/captcha" />
Paratiisin poika: Getmessage.php-tiedostossa ovat virheet "Et ooo sisällä" ja "Sun viestis näyttää olevan tyhjä..." väärin päin. Sisennä koodisi, niin huomaat sen itsekkin. Sinun kannattaisi laittaa tarkistukset funktioon, niin välttyisit if-sekasotkulta.
Niimpä näyttäisi. Anteeksi. En jaksa käyttää functioita kun ne eivät oikein mulla tahdo toimia...
Kyllähän ne funktiot toimii. Jos tulee virhe, niin siinäkin tilanteessa tietokone on toiminut täsmälleen oikein. Kaikki virheet tietokoneissa ovat ihmisen tekemiä (jos jätetään laitteiston rikkoutumiset ja valmistusvirheet pois laskuista).
Merri kirjoitti:
jos jätetään laitteiston rikkoutumiset ja valmistusvirheet pois laskuista
Nekin ovat ihmisen tekemiä virheitä. Toinen jo koneen suunnittelu vaiheessa tehtyjä. Ja toinen liittyy yleensä myös väärinkäyttöön.
Rikkoutuminen voi kylläkin johtua ihan suunnitellun käyttöiän täyttymisestä, eikä siinä tapauksessa ole virhe. (Tietty voi olla käyttäjän virhe, jos ei ottanut riskiä tietoisesti)
Ihmiset tekee tietokoneet. Ihmisten vika. Ennenkuin sanot että koneet tekee jotkut tietokoneet, niin voiit miettiä mistä ne koneet ovat tulleet, jotka tekevät tietokoneita.... Lisäksi, ne koneet ovat myös eräänlaisia tietokoneita.
Paratiisin poika kirjoitti:
Ihmiset tekee tietokoneet. Ihmisten vika.
Kuten sanoin, koneen rikkoutuminen ei välttämättä ole kenenkään vika. Kaikilla koneilla on ominaisuus, että ne kestää tietyn aikaa. Se ei siis tosiaankaan ole vika vaan ominaisuus. Eikä tässä voi syyttää edes huonoa suunnittelua tai puutteellista tekniikkaa.
suunnitteluvirheistä puhuin...
Sivut on helvetin komeat ja liikeidea on aivan mahtava. Jatka samaa rataa!
Aihe on jo aika vanha, joten et voi enää vastata siihen.