Tema: Re: Gal galit kas padet
Autorius: Darius
Data: 2009-06-25 13:13:47
Aciu tau fliks. :)


"fliks" <pasto@nera.dd> wrote in message 
news:h1rdh6$vuu$1@trimpas.omnitel.net...
> 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.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>