Při odeslání zprávy kontrola slova, nevhodné slovo neodeslat

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Při odeslání zprávy kontrola slova, nevhodné slovo neodeslat

Příspěvekod Gizzer2 » 15 črc 2014 08:45

Zdravím,
potřeboval bych poradit následující.

Potřeboval bych poradit jakým způsobem kontrolovat slova psaná do teaxtera a pokud se tam objeví nevhodné slovo zprávu neodeslat. Slovo které považuji za nevhodné je "heslo".

Tudíž pokud odesílaný vzkaz do chatu bude obsahovat toto slovo zpráva se neodešle a vyskočí hláška o tom že uživatel používá nevhodné slovo.

Scripty:
index.php

Kód: Vybrat vše

<?php
  session_start();
  require "../settings.php"; // Vloží soubor s třídou User
require "../user.class.php"; // Vloží soubor s třídou User
$user = new User; // Zavede třídu do proměnné
$user->load(); // Pokusí se přihlásit uživatele z uložených údajů v _SESSION nebo _COOKIE
$_SESSION['jmeno'] =  $user->jmeno ;
$_SESSION['admin'] = $user->admin ;
$_SESSION['id'] =  $user->id ;
?>
<!DOCTYPE html>
<html>       
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">             
    <title>AJAX chat     
    </title>             
    <link rel="stylesheet" href="/chat/css/style.css">           
  </head>
             
  <body>                           
    <div class="chat">                       
      <div class="messages">     
      </div>
      <div class="emotikons">
      <img onclick="Smile(':-)')" src="smileys/1.gif" width="15" height="15" align="middle">
<img onclick="Smile(':-(')" src="smileys/2.gif" width="15" height="15" align="middle">
<img onclick="Smile(':-D')" src="smileys/3.gif" width="15" height="15" align="middle">
<img onclick="Smile(':-P')" src="smileys/4.gif" width="15" height="15" align="middle">
<img onclick="Smile(';-)')" src="smileys/5.gif" width="15" height="15" align="middle">
<img onclick="Smile('X[]')" src="smileys/6.gif" width="20" height="15" align="middle">
<img onclick="Smile('B-]')" src="smileys/7.gif" width="15" height="15" align="middle">
<img onclick="Smile(':-!')" src="smileys/8.gif" width="20" height="15" align="middle">
<img onclick="Smile(':-/')" src="smileys/9.gif" width="25" height="15" align="middle">
<img onclick="Smile('blee')" src="smileys/10.gif" width="25" height="15" align="middle">
<br /></div>         
<textarea class="entry" id="zprava" placeholder="Zprávu odešleš pomocí enter. Na další řádek jdi pomocí SHIFT + ENTER. Nepište si zde o heslo!!"></textarea>                 
    </div>               
<script src="http://code.jquery.com/jquery-2.0.3.js"></script>               
<script src="/chat/js/chat.js"></script>             
  </body>   
</html>


chat.js

Kód: Vybrat vše

var chat = {}
chat.fetchMessages = function () {
   $.ajax({     url: '/chat/ajax/chat.php',
       type: 'post', 
          data: { method: 'fetch' }, 
             success: function(data) {
                    $('.chat .messages').html(data);   
                      } 
                       });
                         }
             chat.throwMessage = function (message) {
             if ($.trim(message).length !=0) {
             $.ajax({     
             url: '/chat/ajax/chat.php',
             type: 'post',   
              data: { method: 'throw', message: message },
                success: function(data) {     
                  chat.fetchMessages();   
                  chat.entry.val('');
           } 
            });   
              } 
               }
               
                chat.entry = $('.chat .entry');
              chat.entry.bind('keydown', function(e) {
                    if (e.keyCode === 13 && e.shiftKey === false) { 
                            chat.throwMessage($(this).val());
                  event.preventDefault();     
                      }     
                       });
   chat.interval = setInterval(chat.fetchMessages, 15000);
   chat.fetchMessages();
   
   
function Smile(smiley)
    {
   
        var currentText = document.getElementById("zprava");
       
        var smileyWithPadding = " " + smiley + " ";
        currentText.value += smileyWithPadding;
    currentText.focus();
   
    }
        function Names(name)
    {
   
        var currentText = document.getElementById("zprava");
       
        var nameWithPadding = ""+name+"";
        currentText.value = nameWithPadding;
    currentText.focus();
   
    }
   


Chat.php

Kód: Vybrat vše

<?php
class Chat extends Core{
     public function fetchMessages() {
          $this->query("
           SELECT     `chat`.`message`,
                       `chat`.`timestamp`,
                       `chat`.`ip`,
                       `chat`.`message_id`,
                       `uzivatele`.`jmeno`,
                       `uzivatele`. `id`,
                       `uzivatele`. `admin`
           FROM        `chat`
           JOIN        `uzivatele`
           ON          `chat`.`id` = `uzivatele`.`id`
           ORDER BY    `chat`.`timestamp`
           DESC           
          ");
         
          return $this->rows();
     }
     public function throwMessage($id, $message){
     $adr=$_SERVER["REMOTE_ADDR"];   
         $this->query("
             INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
             VALUES (" . (int)$id.", '" .$this->db->real_escape_string($message) ."', UNIX_TIMESTAMP(), '$adr')
         
         ");
     }
}


Budu vděčný za radu. :clap:
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Reklama
Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 09:13

Z toho, co jsi napsal to chápu tak, že potřebuješ pouze kontrolovat, jestli tam není jedno slovo, ale bude to asi jako cenzura, že? Že bude někde v databázi seznam slov, popř. ve scriptu budeš mít array a v ní slova k vycenzurování..

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod Gizzer2 » 15 črc 2014 09:16

Jde mi jen o jedno jediné slovo a to slovo je "heslo" takže když někdo napíše větu do chatu a v té větě bude slovo heslo a pokusí se zprávu odeslat, vyskočí mu hláška o tom že použil nevhodné slovo a zpráva se neodešle.
Umím už v odeslané zprávě to slovo scenzůrovat, ovšem není dobré že se vůbec ta zpráva s tím slovem odeslala.

--- Doplnění předchozího příspěvku (15 Črc 2014 09:20) ---

Osobně si myslím že by bylo nejlepší použít javascript, ovšem vůbec nevím jak.
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 09:27

Já bych to přes js neřešil, ale udělal bych to klasicky přes funkci strstr..
Tím myslím:

Kód: Vybrat vše

<?php
if(strstr($retezec-textarea, "heslo"))
{
   echo "Textarea obsahuje slovo heslo";
}
?>

Tohle řešit přes js je zbytečné.
Ale jestli to chceš přes js..

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod Gizzer2 » 15 črc 2014 09:31

Vyzkouším to ale ještě mi prosím řekni kam tohle vložit?
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 09:39

Do části, kde script zpracovává tu zprávu - tj. odesílá do db. Což je tedy toto:

Kód: Vybrat vše

  public function throwMessage($id, $message){
     $adr=$_SERVER["REMOTE_ADDR"];   
      if(!strstr($message, "heslo")){
         $this->query("
             INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
             VALUES (" . (int)$id.", '" .$this->db->real_escape_string($message) ."', UNIX_TIMESTAMP(), '$adr')
         
         ");
      }else{
        die("Text obsahuje slovo heslo!");
      }


Pokud si spustím tento script:

Kód: Vybrat vše

<?php
$retezec = "Toto je řetězec, v kterém se nachází slovo heslo";
if(strstr($retezec, "heslo"))
{
   echo "Textarea obsahuje slovo heslo";
}
?>

Tak mi vyjede: Textarea obsahuje slovo heslo

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod Gizzer2 » 15 črc 2014 09:44

Děkuji.
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 09:51

Nemáš zač. Funguje?

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod Gizzer2 » 15 črc 2014 09:54

Funguje, zpráva se neodešle tak jak má.
Teď ještě dokoumat aby to vyhodilo JS hlášku že není možné takovou zprávu odeslat, místo toho echa.
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 09:58

alert? http://imgur.com/TGNh0A7

Kód: Vybrat vše

<script type"text/javascript">
alert("Text obsahuje nepovolené slovo!");
</script>

Nebo jakou js hlášku?

Uživatelský avatar
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod Gizzer2 » 15 črc 2014 10:01

přesně takovouto hlášku, co se týče toho jak to napsat jsem věděl ale už zase nevím kam :D
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
To nejlepší z country muziky:http://country.funsite.cz/

Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Při odeslání zprávy kontrola slova, nevhodné slovo neode

Příspěvekod lucAss » 15 črc 2014 10:04

Kód: Vybrat vše

public function throwMessage($id, $message){
     $adr=$_SERVER["REMOTE_ADDR"];   
      if(!strstr($message, "heslo")){
         $this->query("
             INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
             VALUES (" . (int)$id.", '" .$this->db->real_escape_string($message) ."', UNIX_TIMESTAMP(), '$adr')
         
         ");
      }else{
      ?>
        <script type"text/javascript">
      alert("Text obsahuje nepovolené slovo!");
      </script>
      <?
      }
      ?>


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů