Tema: Re: Gal galit kas padet
Autorius: Darius
Data: 2009-06-21 11:46:14
Aciu fliks uz pagalba. :)


"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.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>