Re: Overovani hodnoty poli v PHP

From: Paco (paco@seznam.cz)
Date: 27. 06. 2002, 13:51 CEST


>> Potreboval bych poradit s jednou veci v PHP. Jak pomoci podminky zjistit,
>> zda jedno z poli obsahuje cislo (DECIMAL) a zda jedno pole obsahuje www
>> adresu.
>> Nasel jsem, ze by to mohlo byt pomoci ctype_digit (pro prvni pripad) a
>> strstr (pro druhy pripad). Ale nevim, jestli to pomuze, ani jak to
>> formulovat. David "Nocni motylek" Hartl

> A proc to nezkontrolovat jeste pred odeslanim formulare JavaScriptem?
> Wog

Aha. Myslel jsem nejdriv, ze potrebujes zjistit, zda ty hodnoty
neobsahuji nejaka POLE ve smyslu promennych PHP, tedy arrays...

2 Wog: treba to chce mit bulletproof i kdyz ma nekdo non-js browser
nebo vypnute scripty.

> error_log ("Neco jsi udelal spatne, kamo.")

Takhle ne. error_log() musi mit 2-4 parametry a posila chybove
hlaseni podle typu napriklad do chyboveho logu PHP na serveru,
do souboru, mailem, do PHP remote debug systemu, etc. To asi
nebude to, co jsi chtel, slouzi to k jinym ucelum.

Takze rekneme, ze to cislo je ve formu v poli 'pocet' a ta www
adresa v poli 'www' - zkus li na localu tenhle kod a pak si to
prekopej podle svych potreb - je to jenom hola kostra.

Jeste k tomu regexu na www adresu: neni sice uplne neprustrelny,
ale na vetsinu normalnich adres v beznem tvaru by mel stacit.
Psal jsem ho ale z ruky a netestoval, takze za pripadne bugy
nerucim. ;-)) Taky je znacne rozvlekly, v perl-syntaxi by se dal
napsat daleko hutneji. Taky toho asi mailer dost zalomi, takze
pozor na to!

pako Paco. 

<!-- 
<html><head>
<title>Title</title>
</head><body>
<br><br><center>
<form method=post>
Adresa: <input name=www type=text size=69 value="<?echo isset($www)?$www:"";?>"><br>
Cislo: <input name=pocet type=text size=10 value="<?echo isset($pocet)?$pocet:"";?>"><br>
<input name=sent type=hidden value=1><input type=submit>
</form><br><br><br>
<?
error_reporting(E_ERROR);
if($sent){
	$err=0;
	if(!is_numeric($pocet)) $err++;
	if(!eregi("^(http://)?(www\.)?[a-z]([-0-9a-z]*[0-9a-z])*(\.[0-9a-z]{2,4})+(/[-0-9a-z\.~_]*)*$",$www))
$err+=2;
	switch($err){
		case 3: echo"Oboje je spatne";
			break;
		case 2: echo"Adresa je spatne";
			break;
		case 1: echo"Cislo je spatne";
			break;
		default: echo"Vsechno je dobre";
	}
}
?>
<br><br></center>
</body>
</html>
<-- 


______________________________________________________________________
Reklama:
Konec tichych spolecniku! Nyni bude mluvit opravdu kazdy. - Nove tarify pro firemni zakazniky.
http://ad2.seznam.cz/redir.cgi?instance=28784%26url=http://www.oskarmobil.cz/cz/business/novinky.html 



This archive was generated by hypermail 2.1.2 : 27. 06. 2002, 13:51 CEST