Tein murekuhasta tällä ohjeella chatin: http://mureakuha.com/koodikirjasto/592 . Viestit generoituvat siis chat.txt tiedostoon. Mutta kysymykseni olikin että onko mahdollista saada noita viestejä pois tietokannasta yhdellä klikkauksella, eli (vain) mulla näkyis viestien vieressä joku "poista" nappi?
Tietysti on. Voit joko poistaa viestejä rivinumeron perusteella, mutta luotettavampaa olisi lisätä jokaiseen viestiin yksilöllinen tunniste, jonka perusteella rivit voi tunnistaa ja poistaa luotettavammin.
Ja PHP-taitoni ovat melko huonot, joten mitenköhän tällaisen "tunnisteen" voisi lisätä?
Tuo koodi on todella huonoa, en suosittele.
Voit lisätä chat.php:hen yksilöivän tunnisteen joka riville muuttamalla fwrite-riviä näin:
Yksinkertaisin tapa viestien poistamiseen on tehdä erillinen sivu, jolla niitä poistetaan. Sivu voisi näyttää tältä:
<?php $viestit = file("chat.txt"); if (isset($_POST["poista"])) { if ($_POST["salasana"] != "kissa2") { die("Salasana ei kelpaa!"); } file_put_contents("chat.txt", array_diff($viestit, array(urldecode($_POST["poista"])))); header("Location: ". basename(__FILE__)); die(); } ?> <form action="?" method="post"> Salasana: <input type="password" name="salasana"> <hr> <?php // -4 = näytetään 4 viestiä; 0 = näytetään kaikki. foreach (array_slice($viestit, -4) as $viesti) { echo $viesti; $v = urlencode($viesti); echo "<button type='submit' name='poista' value=\"$v\">Poista</button>"; echo "<hr>"; } ?> </form>
Kiitosta, toimii ja auttoi paljon :)
Onkelma ilmeni.
Chatissa spämmii nykyään niin moni, että haluaisin että KAIKKIEN jotka kirjoittavat tuonne, IP-osoite näkyisi, mutta vain minulle, tuo onnistuisi varmaan esim. salasanalla?
Viitsisikö joku auttaa? IP:t saisi näkyä suoraan viesteissä tai sitten jollain eri sivulla..
Kaipaisin vastauksia..
Triplepost..
Ei se hyvä vastaus vaatimalla tule.
Kuten jo viimeksi sanoin, olet valinnut pohjaksi todella huonon koodin, johon on vaikea tehdä mitään järkeviä muutoksia. Koodi perustuu siihen, että kaikki viestit ovat tiedostossa tulostusvalmiina; siksi niiden muokkaaminen tai näyttäminen eri tilanteissa eri tavalla on tarpeettoman vaikeaa. Hankkisit kunnollisen viestisysteemin tai opettelisit itse ohjelmoimaan.
Jos nyt vielä jatketaan vanhalla purkkalinjalla, voit vain lisätä IP-osoitteen tallennusvaiheessa:
// fwrite($fp, $logit); $logit = "<!--ADMIN-->IP: {$_SERVER["REMOTE_ADDR"]}<br><!--/ADMIN-->". $logit; fwrite($fp, "<!-- ". uniqid(1,1). " -->". $logit);
Sitten voit muuttaa viestit tulostavan sivun (Kuhan vinkin ensimmäisen koodin) tällaiseksi, jotta IP-osoitetta ei näytetä siinä:
<?php $viestit = file("chat.txt"); ?> <form method="post" action="chat.php" name="chat"> <p><input name="nick" value="nimi" maxlength="15"></p> <p><input name="msg" type="text" value="viesti" maxlength="128"></p> <p><button type="submit">Lähetä</button></p> </form> <?php foreach (array_slice($viestit, -4) as $viesti) { $viesti = preg_replace('#<!--ADMIN-->.*?<!--/ADMIN-->#', '', $viesti); echo $viesti; } ?>
IP-osoite näkyy tuolla aiemmin tehdyllä sivulla, jolla viestejä voi poistaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.