02.08.2010, 19:44
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
по поводу проверки на пустую строку: trim + strlen, (ирония) если же ты хочешь уличить пользователя во вставке лишних пробелов, тогда регулярные выражения
textarea не убирает ни пробелы, не переносы строк, ни табуляции. Так что отлаживай, где они у тебя там убираются
|
|
02.08.2010, 19:48
|
|
Профессор
|
|
Регистрация: 19.05.2010
Сообщений: 187
|
|
ну как проверить строку на наличие непечатаемых символов, и чтобы если в строке нету других символов так возвратить фолс
проблема в том что оно просто очистит строку и всё таки напечатает пустоту, которая обвёрнута и зарегестрированна как сообщение, то есть не совсем то, тем более если пользователь написал типа " цва " то будет наверно потом "цва" а это не совсем конечно то что хотел видеть пользователь, и ещё от то что связано как сделать чтобы пробел заменялся не один раз например для проверки я поставил к document.getElementById('txAr').value.replace(' ','-') и написал от что
"тест тест тест" а вывело "тест-тест тест" от такие пироги, я только знаю что я тут не правильно сделал и кажется что тут надо не реплейс, ну короче что тут надо?)
Последний раз редактировалось Slawaq, 02.08.2010 в 20:05.
|
|
02.08.2010, 20:07
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
список непечатаемых символов в студию. Как убрать пробельные символы выше сказали
|
|
02.08.2010, 20:18
|
|
Профессор
|
|
Регистрация: 19.05.2010
Сообщений: 187
|
|
ну я сам хотел бы ВЕСЬ список ну это типа такие как табуляция, перенос строки, пробел, ну я не знаю сколько их ну те которые по сути не отображаются но влияют на строку, да я понял с пробелом но я не понял чего несколько пробелов подряд стираются в один, от код отправки
msg = document.getElementById('txAr').value;
if(msg){
msg = 'msg=' + encodeURIComponent(msg.replace(/[\r\n]+/g,'\v').replace(/ +/g,'-'));
xmlhttp.open("POST","ajax.php",true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(msg);
}
а от ПХП код
<?PHP
if (isset($_POST['msg'])){
echo str_replace('>','>',str_replace('"','"',str_replace("'",''',str_replace('<','<',$_POST['msg']))))."<hr style='height:1px;background:silver;border:0px'>";
}
?>
и прием
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('txAr').value = '';
document.getElementById("commArea").innerHTML+=xmlhttp.responseText;
}
}
куда они убегают, я не знаю, может кто с чем-то похожим работал, знает как правильно?
|
|
02.08.2010, 21:07
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Slawaq
|
проблема в том что оно просто очистит строку и всё таки напечатает пустоту
|
не обязательно выводить ту же переменную
$s = '...';
$s2 = trim($s);
if( strlen($s2) == 0 )
echo "обязательное поле";
echo $s;
Сообщение от Slawaq
|
куда они убегают, я не знаю
|
для начала выясни в каком месте это происходит. Отлаживай, на клиенте это console.log, на сервере var_dump($var), error_log($var), file_put_contents(dirname(__FILE__).'/.log', var_export($var, TRUE), FILE_APPEND)
|
|
02.08.2010, 21:12
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Slawaq
|
но я не понял чего несколько пробелов подряд стираются в один
replace(/ +/g,'-')
|
не знаю что у вас за проблема пустых сообщений, у меня такой нет и за последние 7 лет сайтов с форумами и сервисами небыло. Не хотите пропускать "такие сообщения" проверяйте регой. А вообще есть такое слово бан. А от дибилов которые придумают писть мат через дефисы или транслитом или иероглифами ваша защита не поможет. проще поставить бан по кол-ву сообщений в секунду, минуту.
|
|
02.08.2010, 21:17
|
|
Профессор
|
|
Регистрация: 19.05.2010
Сообщений: 187
|
|
Сообщение от x-yuri
|
Отлаживай, на клиенте это console.log, на сервере var_dump($var), error_log($var), file_put_contents(dirname(__FILE__).'/.log', var_export($var, TRUE), FILE_APPEND)
|
я не сильно в этом силён, я не сильно вникаю в роботу своего сервера и я ещё не очень хорошо умею работать на ПХП(так себе, базово пока что)
|
|
02.08.2010, 21:29
|
|
Профессор
|
|
Регистрация: 19.05.2010
Сообщений: 187
|
|
Сообщение от Gozar
|
не знаю что у вас за проблема пустых сообщений, у меня такой нет и за последние 7 лет сайтов с форумами и сервисами небыло. Не хотите пропускать "такие сообщения" проверяйте регой. А вообще есть такое слово бан. А от дибилов которые придумают писть мат через дефисы или транслитом или иероглифами ваша защита не поможет. проще поставить бан по кол-ву сообщений в секунду, минуту.
|
та какой бан) это же гостевая книга, там надо только будет поставить задержку между сообщениями, может дето в 1-2 сек. ну короче, от например даже на этом форуме если идёт несколько пробелов подряд так оно его как 1 видит, но при этом если несколько подряд переносов
так всё нормально, а у меня не так и не так, и я не могу понят чего так, или например вконтакте там тоже если подряд идут непечатаемые символы то оно их как один видит.
Тут вдруг я вот что посмотрел, в Опере замена переноса на \v одно и тоже , если выводить это у Оперы, то это как обычный перенос а у всех других браузеров нет! и теперь у меня даже не переносит на новую строку, короче я в шоке всеми этими не большими проблемами, которых очень много! короче у кого есть валидатор или статья по нему для текста на всякие эти СПЕЦ символы, если вообще это есть.?)
|
|
02.08.2010, 22:08
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Slawaq,
То, что вам нужно это RegExp, идите и изучайте, не так уж это и сложно. Они есть и для js и для php.
ps: и излагать мысли тоже подучитесь, вас сложно понять
|
|
02.08.2010, 22:52
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Gozar
|
ps: и излагать мысли тоже подучитесь, вас сложно понять
|
+1
|
|
|
|