Tema: Re: Gal galit kas padet
Autorius: fliks
Data: 2009-06-23 23:22:01
Galima šitaip:


$fn = isset($_POST['first_name']) ? $_POST['first_name'] : '';

if($fn != ''){

	// Check if value is correct

	if( eregi('^[[:alpha:]\.\' \-]{2,15}$', stripslashes(trim($fn))) ){

		$fn = escape_data($fn);

	}else{
		$fn = FALSE;
		echo 'Please enter correct first name!';
	}
}


Darius wrote:
> fliks, dar karteli prasau tavo pagalbos, kaip reikia pakoreaguoti sitoki 
> koda, kad jei lankytojas blogai uzpilde lauka jam islenda pranesimas 
> apie tai, jei lauko neuzpilde sistema nereaguoja i tai.
> 
> // Check for a first name.
> if (eregi ('^[[:alpha:]\.\' \-]{2,15}$', 
> stripslashes(trim($_POST['first_name'])))) {
>  $fn = escape_data($_POST['first_name']);
> } else {
>  $fn = FALSE;
>  echo '<p><font color="red" size="+1">Please enter your first 
> name!</font></p>';
> }
> 
> Dekoju is anksto.
> 
> 
> "fliks" <pasto@nera.dd> wrote in message 
> news:h1gnm8$rqv$1@trimpas.omnitel.net...
>> Formos post code reikšmė nenuskaitoma iš $_POST masyvo, kai 
>> isset($_POST['submitted']) yra TRUE.
>> 82 eilutėj (f-joj str_replace()) pradedamas naudoti variablas 
>> $postcode, kuriam nepriskirta jokia reikšmė.
>>
>>
>> Darius wrote:
>>> Prisegu register.php failą.
>>>
>>>
>>> "Darius" <darzi@takas.lt> wrote in message 
>>> news:h1cvop$de7$1@trimpas.omnitel.net...
>>>> fliks, gal gali padėt išspręst šitą bėdą?
>>>>
>>>> Šiaip man ir reikia, kad tikrintu UK post code formatą. Dėl 
>>>> saugojimą post code DB, tai kopinant padariau klaidą, nenukopinau 
>>>> gerai. Yra va taip, bet neįrašo duomenų:
>>>> $query = "INSERT INTO users (email, pass, first_name, last_name, 
>>>> city, town, post_code, mob_number, active, registration_date) VALUES 
>>>> ('$e', SHA('$p'), '$fn', '$ln', '$ct', '$tw', '$postcode', 
>>>> '$mob_number', '$a', NOW() )";
>>>>
>>>> Darant registraciją išmeta "Undefined variable: postcode ". Kur čia 
>>>> klaida? Kodėl meta,kad neapibrėžtas kintamasis?
>>>> Iš anksto dėkoju.
>>>>
>>>>
>>>> "fliks" <pasto@nera.dd> wrote in message 
>>>> news:h1ag7o$f0s$1@trimpas.omnitel.net...
>>>>> Šitas checkPostCode() tikrina tik UK post code formatą.
>>>>> Ar ne geriau padaryti kokį nors generic formato tikrinimą, kad 
>>>>> leistų tik raides ir skaičius?
>>>>> Dar priklauso, kiek kritiška yra turėti tikslų post code. Jei tai 
>>>>> yra labai svarbu, teks ieškoti visų reikiamų šalių formatus ir 
>>>>> pagal juos rašytis tikrinimą. Jei post code surinkimas yra tik kaip 
>>>>> formalumas, kaip ir minėjau, galima daryti tik generic tikrinimą.
>>>>>
>>>>> Kas liečia post code saugojimą į db, žemiau pateiktoj INSERT 
>>>>> užklausoj trūksta reikšmės post_code stulpeliui (tarp '$tw' ir '$a').
>>>>>
>>>>>
>>>>> Darius wrote:
>>>>>> Gal galit patarti kaip padaryti. Radau scriptą, kuris tikrina 
>>>>>> pašto kodą:
>>>>>>
>>>>>> function checkPostcode (&$toCheck) {
>>>>>> $alpha1 = "[abcdefghijklmnoprstuwyz]";
>>>>>> $alpha2 = "[abcdefghklmnopqrstuvwxy]";
>>>>>> $alpha3 = "[abcdefghjkstuw]";
>>>>>> $alpha4 = "[abehmnprvwxy]";
>>>>>> $alpha5 = "[abdefghjlnpqrstuwxyz]";
>>>>>>
>>>>>> $pcexp[0] = 
>>>>>> '^('.$alpha1.'{1}'.$alpha2.'{0,1}[0-9]{1,2})([0-9]{1}'.$alpha5.'{2})$'; 
>>>>>>
>>>>>> $pcexp[1] = 
>>>>>> '^('.$alpha1.'{1}[0-9]{1}'.$alpha3.'{1})([0-9]{1}'.$alpha5.'{2})$';
>>>>>> $pcexp[2] = 
>>>>>> '^('.$alpha1.'{1}'.$alpha2.'[0-9]{1}'.$alpha4.')([0-9]{1}'.$alpha5.'{2})$'; 
>>>>>>
>>>>>> $pcexp[3] = '^(gir)(0aa)$';
>>>>>> $pcexp[4] = '^(bfpo)([0-9]{1,4})$';
>>>>>> $pcexp[5] = '^(bfpo)(c\/o[0-9]{1,3})$';
>>>>>>
>>>>>> $postcode = strtolower($toCheck);
>>>>>> $postcode = str_replace (' ', '', $postcode);
>>>>>>
>>>>>> $valid = false;
>>>>>> foreach ($pcexp as $regexp) {
>>>>>> if (ereg($regexp,$postcode, $matches)) {
>>>>>> $toCheck = strtoupper ($matches[1] . ' ' . $matches [2]);
>>>>>> $toCheck = ereg_replace ('C\/O', 'c/o ', $toCheck);
>>>>>> $valid = true; break; } }
>>>>>>
>>>>>> $postcode = strtoupper(str_replace(' ','',$postcode));if 
>>>>>> (!checkPostcode($postcode) ) { $error['postcode'] = "Invalid Post 
>>>>>> Code, please try again";}
>>>>>>
>>>>>> if ($valid){return true;} else {return false;};}
>>>>>>
>>>>>> Neišeina padaryti, kad įvestą pašto kodą įrašytu į DB. DB yra 
>>>>>> sukurta lentelė „users“ su laukais „email, pass, first_name, 
>>>>>> last_name, city, town, post_code, active, registration_date“. 
>>>>>> Pildant forma kitų formos laukų duomenis įrašo į DB nes pvz. 
>>>>>> formos lauką „Town“ tikrinu tokiu būdu:
>>>>>>
>>>>>> if (eregi ('[[:alpha:]]{2,30}$', 
>>>>>> stripslashes(trim($_POST['town'])))) {
>>>>>>  $tw = escape_data($_POST['town']);
>>>>>> } else {
>>>>>>  $tw = FALSE;
>>>>>>  echo '<p><font color="red" size="+1">Please enter your 
>>>>>> town!</font></p>';
>>>>>> }
>>>>>> Kintamąjį „$tw“ įrašau į užklausą:
>>>>>>
>>>>>> $query = "INSERT INTO users (email, pass, first_name, last_name, 
>>>>>> city, town, post_code, active, registration_date) VALUES ('$e', 
>>>>>> SHA('$p'), '$fn', '$ln', '$ct', '$tw', '$a', NOW() )";
>>>>>>
>>>>>> Ir viskas ok. Patarkit, kaip padaryti taip pat, kad įrašytų ir 
>>>>>> „postcode“ lauko duomenis tokiu pat būdu?
>>>>>> Dėkoju iš anksto.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> "fliks" <pasto@nera.dd> wrote in message 
>>>>>> news:h158mr$983$1@trimpas.omnitel.net...
>>>>>>> Tame kodo gabaliuke tik parašiau, kaip galima būtų daryti formoj 
>>>>>>> įvestos post code reikšmės pradžios tikrinimą su db esančiomis 
>>>>>>> leidžiamomis post code pradžiomis, nes, kaip supratau, to ir 
>>>>>>> klausei.
>>>>>>>
>>>>>>> Be abejo, dar prieš tikrinant su db, reiktų padaryti formoj 
>>>>>>> įvesto post code formato tikrinimą, pvz, su regexp paterna, nes 
>>>>>>> gali būti, kad į formą bus suvesta post code su teisinga pradžia 
>>>>>>> (kuri yra db), o po jos gali sekti bilekokios raidės ar skaičiai 
>>>>>>> ir pan (pvz, 'PO123abcs00').
>>>>>>>
>>>>>>> O dėl to Array, tai lentoje į tą post_code buvo saugomas masyvas, 
>>>>>>> ne stringas. Greičiasiai php kode yra klaida.
>>>>>>>
>>>>>>>
>>>>>>> Darius wrote:
>>>>>>>> fliks: Bandau tavo koda, registracija atlieka, tik DB kur laukas 
>>>>>>>> "post_code" vietoj pasto kodo iraso "Array". Ir pildant forma 
>>>>>>>> gali rasyti bet ka, netikrina? Kame gali buti beda?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> "fliks" <pasto@nera.dd> wrote in message 
>>>>>>>> news:h0pad9$hq$1@trimpas.omnitel.net...
>>>>>>>>> P.S. Čia jei naudojama MySQL. Analogiškai galima tą patį 
>>>>>>>>> parašyti ir kitokiai dbms.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> fliks wrote:
>>>>>>>>>> Kalbant apie DB, jei lenta yra post_code_tbl, o post code 
>>>>>>>>>> pradžios yra stulpelyje post_code_beg (VARCHAR tipo), galima 
>>>>>>>>>> būtų rašyti taip:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> $form_post_code = isset($_POST['post_code']) ? 
>>>>>>>>>> ltrim(rtrim($_POST['post_code'])) : '';
>>>>>>>>>>
>>>>>>>>>> if($form_post_code != '') {
>>>>>>>>>>
>>>>>>>>>>     $db_query = 'SELECT COUNT(post_code_beg) FROM 
>>>>>>>>>> post_code_tbl WHERE post_code_beg = SUBSTRING(\'' . 
>>>>>>>>>> mysql_real_escape_string($form_post_code, $link) . '\', 1, 
>>>>>>>>>> LENGTH(post_code_beg))';
>>>>>>>>>>
>>>>>>>>>>     $result = mysql_query($db_query);
>>>>>>>>>>
>>>>>>>>>>     $row = mysql_fetch_row($result);
>>>>>>>>>>
>>>>>>>>>>     if($row[0] == 0){
>>>>>>>>>>         // formoje post code reikšmė neatitiko nė vienos post 
>>>>>>>>>> code pradžios
>>>>>>>>>>     }
>>>>>>>>>>
>>>>>>>>>> } else {
>>>>>>>>>>
>>>>>>>>>>     echo 'Please enter post code!';
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Reikia tikrinti, ar mysql_query() kažką (teisingai) grąžino ir 
>>>>>>>>>> pan. Surašiau tik bendrai, kaip galima būtų daryti tą code 
>>>>>>>>>> tikrinimą.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Darius wrote:
>>>>>>>>>>> Cia idejau kokiu principu tikrinu litus formos laukus. Gal 
>>>>>>>>>>> galetum konkreciau paaiskint kaip reiketu padaryti, kad 
>>>>>>>>>>> tikrintu Post code lauka?Sakykim duomenys jau yra suvesti i DB.
>>>>>>>>>>> Buciau begalo dekingas.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message 
>>>>>>>>>>> news:h0nfec$epq$1@trimpas.omnitel.net...
>>>>>>>>>>>> Last name galima sutikrinti ir su regexpais, bet jei nori 
>>>>>>>>>>>> tikrinti su kažkokiais duomenimis tai regexp tau nepadės su 
>>>>>>>>>>>> regexp gali patikrinti nebent kad butu iš kelių raidžių ir 
>>>>>>>>>>>> kažkiek skaičių.
>>>>>>>>>>>>
>>>>>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message 
>>>>>>>>>>>> news:h0nf6v$ej6$1@trimpas.omnitel.net...
>>>>>>>>>>>>> Tai kaip ten yra ką nori tikrinti? Post Code ar Last Name?
>>>>>>>>>>>>>
>>>>>>>>>>>>> "Darius" <darzi@takas.lt> wrote in message 
>>>>>>>>>>>>> news:h0lnkk$9t$1@trimpas.omnitel.net...
>>>>>>>>>>>>>> Laukui "Last name" naudoju toki tikrinima:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> // Check for a last name.
>>>>>>>>>>>>>> if (eregi ('^[[:alpha:]\.\' \-]{2,30}$', 
>>>>>>>>>>>>>> stripslashes(trim($_POST['last_name'])))) {
>>>>>>>>>>>>>>  $ln = escape_data($_POST['last_name']);
>>>>>>>>>>>>>> } else {
>>>>>>>>>>>>>>  $ln = FALSE;
>>>>>>>>>>>>>>  echo '<p><font color="red" size="+1">Please enter your 
>>>>>>>>>>>>>> last name!</font></p>';
>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Sakykim sudejau kodus i DB, kokiu pavidalu reiketu uzduoti 
>>>>>>>>>>>>>> salyga?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message 
>>>>>>>>>>>>>> news:h0ln7j$v92$1@trimpas.omnitel.net...
>>>>>>>>>>>>>>> Nepapraščiau sudėt į db ir paskui vieno select'o 
>>>>>>>>>>>>>>> klausimas lieka?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> "Darius" <darzi@takas.lt> wrote in message 
>>>>>>>>>>>>>>> news:h0lmqq$ugj$1@trimpas.omnitel.net...
>>>>>>>>>>>>>>>> Sveiki,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Reikia Jusu pagalbos. Padariau registracijos forma, visi 
>>>>>>>>>>>>>>>> laukai tikrinami, kad butu uzpildyti. Patarkit kaip 
>>>>>>>>>>>>>>>> padaryti, kad tikrintu "Post code" lauka, kai "Post 
>>>>>>>>>>>>>>>> code" prasideda is keliu didziuju raidziu ir skaiciu, 
>>>>>>>>>>>>>>>> jie yra pastovus, nesikeicia. Visi sie kodai yra 
>>>>>>>>>>>>>>>> atskirame faile, txt pavidale. Kaip reiketu padaryti,kad 
>>>>>>>>>>>>>>>> zmogus iveda pasto coda, o sistema patikrina ar atitinka 
>>>>>>>>>>>>>>>> kodo pradzia esanti sarase?
>>>>>>>>>>>>>>>> Dekoju is anksto.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>