Martiny Posted March 4, 2010 Report Share Posted March 4, 2010 Sveiki! Meklēju labāko risinājumu ar nelielu kodu. Lietotājs aizpilda web FORMu, kurā ievada vārdu un e-pasta adresi. Lietojot tikai PHP kodu pārbaudām ievadītos datus, vai tie atbilst nosacījumiem: 1. Lietotāja vārdam jābūt garākam par četriem simboliem un tas nevar saturēt ciparus. Vēlā jāņem arī latviešu alfabēts, kuru apstrādājot funkcija strlen(); strādā kļūdaini. Piemēram strlen("Āķis") atgriež 6, nevis 4, kā tas ir reāli. 2. Vai otrajā laukā ievadītā simbolu virkne atbilst e-pasta adreses nosacījumiem. Te es neminu variantu, kad lietotājs neievadot datus nospiež SUBMIT, jo to jau pat iesācējs sapratīs kā atrisināt. Paldies jau iepriekš! Vai tiešām nevaram iztikt bez JavaScript? :) Quote Link to comment Share on other sites More sharing options...
briedis Posted March 4, 2010 Report Share Posted March 4, 2010 strlen vietā jālieto ir mb_strlen(), lai tas korekti strādātu ar utf-8 (RTFM) Lietotājs nosūta formu - ar php pārbaudam - ja ir kļūdas, izdrukājam to pašu formu + kļūdu paziņojumu (input laukos saliekot vecās rakstītās vērtības, lai nav jāpārraksta) Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted March 4, 2010 Report Share Posted March 4, 2010 Epastu var paarbaudiit ar: http://uk2.php.net/filter_var Quote Link to comment Share on other sites More sharing options...
briedis Posted March 4, 2010 Report Share Posted March 4, 2010 Lūdzu izmanto code tagu. Nevaru uztvert savādāk... Quote Link to comment Share on other sites More sharing options...
Martiny Posted March 4, 2010 Author Report Share Posted March 4, 2010 // parameter for use with strspan $span_str = "abcdefghijklmnopqrstuvwxyz" . "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // must have at least one character if (strspn($_POST['user_name'],$span_str) == 0) { echo 'Neatbilstošs vārds'; } // must contain all legal characters if (strspn($_POST['user_name'],$span_str) != strlen($name)) { echo 'Neatbilstošs vārds 2'; } // min and max length if (strlen($_POST['user_name']) < 4) { echo 'Vārda garums nevar būt īsāks par četriem simboliem.'; } if (strlen($_POST['user_name']) > 25) { echo 'Neaizmirsti pieminēt arī savas vecmāmiņas vārdus.'; } // illegal names if (eregi("^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)| (halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)| (httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)| (debian)|(ns)|(download))$", $_POST['user_name'])) { echo 'Vai necenties te kaut ko salaust?'; } if (eregi("^(anoncvs_)", $_POST['user_name'])) { echo 'Neatbilstošs vārds'; } Quote Link to comment Share on other sites More sharing options...
Martiny Posted March 4, 2010 Author Report Share Posted March 4, 2010 Lietotājs teksta laukā ievada savu vārdu. Kā es varu pārbaudīt, ka lietotāja ievadītais $string nesatur ciparus? Quote Link to comment Share on other sites More sharing options...
briedis Posted March 4, 2010 Report Share Posted March 4, 2010 Lietotājs teksta laukā ievada savu vārdu. Kā es varu pārbaudīt, ka lietotāja ievadītais $string nesatur ciparus? if (preg_match('/^[A-Za-z]+$/', $subject)) { //vārds satur tikai A-Z un a-z } else { //satur neatļautos simbolus } Quote Link to comment Share on other sites More sharing options...
Martiny Posted March 4, 2010 Author Report Share Posted March 4, 2010 Paldies, briedi! Pats atradu risinājumu ar ereg(); Cik noprotu, tad neiesaka to ereg lietot, kāpēc? // Ja vārds satur arī ciparus if(ereg('[^A-Za-z]', $user_name)) { //Only lower or upper case letters allowed. echo '<p class="zinojums"><b>Vārds nevar saturēt ciparus!</b></p>'; } Lai jums veicas! Quote Link to comment Share on other sites More sharing options...
2easy Posted March 4, 2010 Report Share Posted March 4, 2010 (edited) Cik noprotu, tad neiesaka to ereg lietot, kāpēc? šoreiz jau dēļ mikrosekundēm :D:D:D http://php.lv/f/topic/15232-eregi-vs-strstr-vs-strpos/page__view__findpost__p__117254 Edited March 4, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Martiny Posted March 4, 2010 Author Report Share Posted March 4, 2010 Paldies, bet pārbaudes šablonā derētu iekļaut arī latviešu alfabēta speciālos simbolus. if(ereg('[^A-Za-zĀČĒĢĪĶĻŅŠŪŽāčēģīķļņšūž]', $user_name)) { echo '<p class="zinojums"><b>Vārds nevar saturēt ciparus!</b></p>'; } Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted March 4, 2010 Report Share Posted March 4, 2010 Es neiesaku izmantot ereg, kaut vai tikai taadeelj, ka vinja ir DEPRECATED. Taa vietaa jaaizmanto PCRE - http://uk.php.net/manual/en/book.pcre.php Quote Link to comment Share on other sites More sharing options...
Martiny Posted March 4, 2010 Author Report Share Posted March 4, 2010 Epastu var paarbaudiit ar: http://uk2.php.net/filter_var Pamāci lūdzu arī mani! Man kaut kā nesanāk. Quote Link to comment Share on other sites More sharing options...
briedis Posted March 4, 2010 Report Share Posted March 4, 2010 Pamāci lūdzu arī mani! Man kaut kā nesanāk. Tiešām ar karoti jāstūķē? Tur tak komentāros ir 101 piemērs!! Quote Link to comment Share on other sites More sharing options...
Morphius Posted March 5, 2010 Report Share Posted March 5, 2010 (edited) Sveiki! Meklēju labāko risinājumu ar nelielu kodu. Manuprāt, visu ko Tev vajag, var atrast šajā saitē: http://www.roscripts.com/Ajax_form_validation-152.html Tā ir tā saucamā formas validācija ar AJAX klābūtni. Ļoti vienkārši konfigurējama un uzstādāma pēc savām vajadzībām. Protams, tīru $_POST ievietot datubāzē nav tas labākais variants... Edited March 5, 2010 by Morphius Quote Link to comment Share on other sites More sharing options...
2easy Posted March 5, 2010 Report Share Posted March 5, 2010 if(ereg('[^A-Za-zĀČĒĢĪĶĻŅŠŪŽāčēģīķļņšūž]', $user_name)) { echo '<p class="zinojums"><b>Vārds nevar saturēt ciparus!</b></p>'; } lol, loģiskāk būtu teikt "vārds var saturēt tikai burtus" un labāk pārbaudīt to šādi preg_match('/^[a-zā-ž]+$/i', $user_name) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.