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

Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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/
Uživatelský avatar
lucAss
Level 2
Level 2
Příspěvky: 163
Registrován: 07 bře 2012 16:46

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

Příspěvek od lucAss »

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í..
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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: 07 bře 2012 16:46

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

Příspěvek od lucAss »

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..
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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: 07 bře 2012 16:46

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

Příspěvek od lucAss »

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
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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: 07 bře 2012 16:46

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

Příspěvek od lucAss »

Nemáš zač. Funguje?
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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: 07 bře 2012 16:46

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

Příspěvek od lucAss »

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?
Gizzer2
Level 3
Level 3
Příspěvky: 419
Registrován: 27 pro 2011 18:49
Kontaktovat uživatele:

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

Příspěvek od Gizzer2 »

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: 07 bře 2012 16:46

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

Příspěvek od lucAss »

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> 
      <?
      }
      ?>
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

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