Autor Zpráva
Generation
Profil *
Ahoj všem,

potřeboval bych poradit jak upravit následující script aby tam bylo více zakázaných slov.
Zakázané slovo je na řádku 31.
Já s JS vůbec neumím takže nejsem schopny to opravit.
Google moc nepomohl, jen asi to že by to mělo jít nějak pomocí array.
Budu vděčný za úpravu.
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) 
    {     
        if(!strstr(message, "heslo"))
        {
            $.ajax({     
                    url: '/chat/ajax/chat.php',
                    type: 'post',   
                    data: { method: 'throw', message: message }, 
                    success: function(data) 
                    {     
                        chat.fetchMessages();   
                        chat.entry.val(''); 
                    }  
                  });
        }else{
            alert("Text obsahuje zakázané slovo ");
        } 
    }  
}
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();
}
function strstr(haystack, needle, bool) 
{
    var pos = 0;
    haystack += '';
    pos = haystack.indexOf(needle);
    if (pos == -1) 
    {
        return false;
    }else{
        if (bool) 
        {
            return haystack.substr(0, pos);
        }else{
            return haystack.slice(pos);
        }
    }
}



    



Omlouvám se zakázané slovo je na řádku 18
Keeehi
Profil
Řádek 18 si nahraď tímto:
var index;
var words = ["a", "b", "c"];
var ok=true;
for (index = 0; index < words.length; ++index) {
    if(strstr(message, words[index])) {
        ok = false;
        break;
    }
}

if (ok) {
Generation
Profil *
[#2] Keeehi

Perfektní funguje.
Moc děkuji.
Generation
Profil *
Zdravím po delší době.
Bylo mi záhadou proč mi nikdo nepíše do chatu.
Používám tento JS pro zakázání nevhodných slov
chat.throwMessage = function (message) 
{    
    if ($.trim(message).length !=0) 
    {     
        var index;
var words = ["heslo", "hesla", "password", "Heslo", "Hesla", "Password"];
var ok=true;
for (index = 0; index < words.length; ++index) {
    if(!strstr(message, words[index])) {
        ok = false;
        break;
    }
}
 
if (ok) {
            $.ajax({     
                    url: '/chat/ajax/chat.php',
                    type: 'post',   
                    data: { method: 'throw', message: message }, 
                    success: function(data) 
                    {     
                        chat.fetchMessages();   
                        chat.entry.val(''); 
                    }  
                  });
        }else{
            alert("Text obsahuje některé ze zakázaných slov, např.: heslo, hesla, ....... O hesla v chatu totiž nežádáme");
        } 
    }  
}

A ať napíši do chatu cokoliv aniž by to bylo ze seznamu zakázaných slov tak to hodí hlášku "Text obsahuje......." A zprávu to neodešle.
Může mi někdo poradit z jakého důvodu se tak děje?
Děkuji
juriad
Profil
Já bych to řešil mnohem jednodušeji, testování bych prováděl regulárním výrazem; žádnou funkci strstr (které ani nerozumíš) ani cyklus nepotřebuješ.
http://kod.djpw.cz/zzeb

Chyba je na 9. řádku, máš tam navíc negaci, kterou tam Keeehi neměl.
Generation
Profil *
juriad:
Děkuji moc

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: