Задължителни полета

deathripple

New Member
В една форма за регистрация примерно как се прави определени полета да са задължителни за попълване и не само да са задължителни ами в определени полета да се приемат само определени символи и ако са празни или грешно попълнени да не може да се продължи регистрацията....примерно
Име: само букви..никакви черти точки цифри и т.н
поща: само букви, цифри, "_" , "." и задължително да съдържа "@"
телефон: само цифри
 
с проверка през php.
Или ако искаш да пишеш само определени неща в полето, може и през JavaScript, наскоро колегата писа нещо подобно за една петиция, да може да се пише само на Кирилица и тн... а полетата с ЕГН да може да се пише само цифри, ала бала. Ако ти трябва, може да ти дам JS-то
 
Код:
function checkForInt(evt) 
{
	var charCode = ( evt.which ) ? evt.which : event.keyCode;
	return ( charCode >= 48 && charCode <= 57 || charCode == 8);
}


function checkForCyr(e)
{
	var keynum;
	var keychar;
	
	if(window.event)
	{
		keynum = e.keyCode;
	}
	else if(e.which)
	{
		keynum = e.which;
	}
	
	if(keynum == undefined)
		return true;
	if(keynum == 8)
		return true;
	keychar = String.fromCharCode(keynum);
	if(keychar == '-')
		return true;

	if((keychar < 'а' || keychar > 'я') && (keychar < 'А' || keychar > 'Я') )
		return false;
	return true;

}

Това ти е JavaScript-а
Функцията checkForInt проверява дали в полето е въведено число или бакспейс, ако да, го пише в полето, ако не не го пише.
Функцията checkForCyr прави проверка дали в полето е писано на кирилица, освен това разрешава някой клавиши, но не ги помня... накрая толкова го засрахме заради проблеми с поддръжката под различните браузъри, че не е истина.

Последно като го поробвахме работеше безпроблемно под IE7, FF2 и Opera.

Ето ти и html кода на полетата и как да викаш функциите:

Код:
		<tr><td>Град:</td> <td><input type="text" size="15" name="city" value="<?=$_POST['city']?>" onkeypress="return checkForCyr(event)" />
</td></tr>
		<tr><td>ЕГН:</td><td> <input type="text" size="15" name="EGN" maxlength="10" value="<?=$_POST['EGN']?>" onkeypress="return checkForInt(event)" />
</td></tr>


Ето ти и проверката, дали полетата са въведени:

Код:
if (($_POST['name'] != "") && ($_POST['surname'] != "") && ($_POST['family'] != "") && ($_POST['city'] != ""))
	{
		... your code here
	}
	else
	{
		echo ('<font color="red">[b]Моля попълнете всички полета!!![/b]</font>');
		ShowForm();
	}


Ако има някой програмист тука веднага ще ме наплюе... ама след като променщ едно нещо 42390534 пъти ти писва...
 
аз имам известен напредък поне с празните полета
Код:
elseif (empty($name) || empty($mail) || empty($notes))
и със задължителните символи
Код:
elseif(!$mail == "" && (!strstr($mail,"@") || !strstr($mail,".")))
ама с позволените и забранените символи нямам....
 
и....не че съм мързелив ами защото наистина не разбирам ако някой може да ми го допише кода ще съм безкрайно благодарен

Код:
<?php 


$name = $_REQUEST['name'] ; 
$adress = $_REQUEST['adress'] ; 
$mail = $_REQUEST['mail'] ;
$phone = $_REQUEST['phone'] ; 
$order = $_REQUEST['order'] ; 
$name=trim($name); 
$adress=trim($adress); 
$mail=trim($mail); 
$phone=trim($phone); 
$order=trim($order); 
$notes = addslashes($notes); 

$ipi = getenv("REMOTE_ADDR"); 
$httprefi = getenv ("HTTP_REFERER"); 
$httpagenti = getenv ("HTTP_USER_AGENT"); 

if (!isset($_REQUEST['mail'])) { 
header( "Location: http://localhost/orders/order.html" ); 
} 

elseif(!$mail == "" && (!strstr($mail,"@") || !strstr($mail,"."))) { 
header( "Location: http://localhost/orders/ordererror.html" ); 
} 
elseif (empty($name) || empty($adress) || empty($phone) || empty($order)) { 
header( "Location: http://localhost/orders/ordererror.html" ); 
}
.........

благодарение на моите обширни познания този скрипт за приемане на някви поръчки от сайт и пращането им на и-меил ми отне само 2 дена...моля някой ако може само да ми допише:
за полето name да приема само букви без никакви други символи
за полето mail да приема само букви и цифри и там другите символи които по принцип са позволени..... "." , "_"
и за полето phone да приема само цифри
 

Горе