@drtvader
Вечный студент

Почему не работает валидация номера телефона?

Почему не работает проверка телефона? Где я ошибся? Всегда пишет, что нужно ввести буквами. И не могу отключить проверку капчи, вроде нашел, удаляю, но всё равно требует.
?<?php

/* config start */

$emailAddress = '';

/* config end */


require "phpmailer/class.phpmailer.php";

session_name("fancyform");
session_start();


foreach($_POST as $k=>$v)
{
	if(ini_get('magic_quotes_gpc'))
	$_POST[$k]=stripslashes($_POST[$k]);
	
	$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}


$err = array();

if(!checkLen('name'))
	$err[]='The name field is too short or empty!';

if(!phone('phone'))
	$err[]='The phone field is too short or empty!';
else if(!phone($_POST['phone']))
	$err[]='Your phone is not valid!';
	
if(!checkLen('email'))
	$err[]='The email field is too short or empty!';
	
else if(!checkEmail($_POST['email']))
	$err[]='Your email is not valid!';

if(!checkLen('subject'))
	$err[]='You have not selected a subject!';

if(!checkLen('subject1'))
	$err[]='You have not selected a subject!';

if(!checkLen('message'))
	$err[]='The message field is too short or empty!';

if((int)$_POST['captcha'] != $_SESSION['expect'])
	$err[]='The captcha code is wrong!';


if(count($err))
{
	if($_POST['ajax'])
	{
		echo '-1';
	}

	else if($_SERVER['HTTP_REFERER'])
	{
		$_SESSION['errStr'] = implode('<br />',$err);
		$_SESSION['post']=$_POST;
		
		header('Location: '.$_SERVER['HTTP_REFERER']);
	}

	exit;
}


$msg=
'<strong>Èìÿ:</strong>	'.$_POST['name'].'<br />
<strong>e-mail:</strong>	'.$_POST['email'].'<br />
<strong>IP:</strong>	'.$_SERVER['REMOTE_ADDR'].'<br /><br />

<strong>Ñîîáùåíèå:</strong><br /><br />

'.nl2br($_POST['message']).'

';


$mail = new PHPMailer();
$mail->IsMail();

$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "Tåìà ïèñüìà: ".$_POST['subject'];

$mail->MsgHTML($msg);

$mail->Send();


unset($_SESSION['post']);

if($_POST['ajax'])
{
	echo '1';
}
else
{
	$_SESSION['sent']=1;
	
	if($_SERVER['HTTP_REFERER'])
		header('Location: '.$_SERVER['HTTP_REFERER']);
	
	exit;
}

function checkLen($str,$len=2)
{
	return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]),"utf-8") > $len;
}

function checkEmail($str)
{
	return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}

function phone($phone) 
    { 
    $pattern = "/^((8)|([\+]?(7)))+(?(?=([ -]))[ -]?\(?\d{3}\)?)+(?(?=([ -]))[ -]?\d{3})+(?(?=([ -]))[ -]?\d{4})$/"; 
    if(preg_match($pattern, $phone)) 
     { 
        return true;} 
       return false;} 

?>
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
регексп адовый )))
телефон - не телекс, букав в нем нету
1) очищаете от букав (НЕ цифровых символов)
2) поверяете
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы