Jump to content
php.lv forumi

Formas datu pārbaude.


Martiny

Recommended Posts

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? :)

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

// 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';
}

Link to comment
Share on other sites

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
}

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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>';
}

Link to comment
Share on other sites

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 by Morphius
Link to comment
Share on other sites

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)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...