temel php soru

3 Cevap

Ben daha iyi bir düşünebildiğim fakir başlık, ama im değil bir deneyimli programcı için üzgünüm

Bunun yerine diziler hataları saklamak, sonra ben yanında giriş alanına bunları göstermek istiyorum benim formlarda bazı hataların bir listesini gösterir. Onun kadar seksi!

Nasıl ben bunu öneririm?

$ Tooshortpass = 1;, $ WRONGEMAIL = 1 gibi bir değişken ayarlayın; yanlış yanlış ve daha sonra formda kontrol eğer?

if (!preg_match($regex, $email))  
$errors[] = "Invalid email address";

if (strlen($password) < 4)
$errors[] = "Password too short";

// No errors?   
if (count($errors) == 0)
{
 // success
}

else
{
    foreach ($errors as $error)
    echo '<li>'.$error.'</li>';
}



<table cellspacing="5" cellpadding="0">

<tr>
<td width="70px">Email:</td>
<td><input type="text" name="email" class="textinput" /></td>
<td class="red"><?php if error with email print here ?></td>
</tr>

<tr>
<td>Password:</td>
<td><input type="text" name="password" class="textinput" /></td>
<td class="red"><?php if error with password print here ?></td>
</tr>

<tr>
<td>&nbsp;</td>
<td><input type="submit" /></td>
</tr>

</table>

3 Cevap

if (!preg_match($regex, $email))  
$errors['email'] = "Invalid email address";

if (strlen($password) < 4)
$errors['password'] = "Password too short";

// No errors?   
if (count($errors) == 0)
{
 // success
}



<table cellspacing="5" cellpadding="0">

<tr>
<td width="70px">Email:</td>
<td><input type="text" name="email" class="textinput" /></td>
<td class="red"><?php if(isset($errors['email'])){ echo $errors['email']; } ?></td>
</tr>

<tr>
<td>Password:</td>
<td><input type="text" name="password" class="textinput" /></td>
<td class="red"><?php if(isset($errors['password'])){ echo $errors['password']; } ?></td>
</tr>

Ya da, Savageman belirttiği gibi

if (!preg_match($regex, $email))  
$errors['email'][] = "Invalid email address";

if (strlen($password) < 4)
$errors['password'][] = "Password too short";

// No errors?   
if (count($errors) == 0)
{
 // success
}

function print_errors($error_array)
{
    foreach($error_array as $error)
    {
        echo $error;
    }
}



<table cellspacing="5" cellpadding="0">

<tr>
<td width="70px">Email:</td>
<td><input type="text" name="email" class="textinput" /></td>
<td class="red"><?php if(isset($errors['email'])){ print_errors($errors['email']); } ?></td>
</tr>

<tr>
<td>Password:</td>
<td><input type="text" name="password" class="textinput" /></td>
<td class="red"><?php if(isset($errors['password'])){ print_errors($errors['password']); } ?></td>
</tr>

Evet, bu bir olasılık olabilir. Ama diziler kullanmak salık edeceğiz.

$errors['email'][] = 'blabla';
$errors['password'][] = 'blabla';

Bu şekilde daha kolay, her alan için daha fazla Hataların ekleyebilirsiniz olarak, daha genişletilebilir.

Lütfen alan adlarından sonra error dizinin anahtarlarını adlandırın. Örneğin

if (!preg_match($regex, $email))  
$errors['email'] = "Invalid email address";

if (strlen($password) < 4)
$errors['password'] = "Password too short";

Ve daha sonra bir hata bu alanda var olup olmadığını kontrol etmek ve göstermek:

<td><input type="text" name="email" class="textinput" /></td>
<?php if(array_key_exists($errors['email'])): ?>
    <td class="red"><?php echo $errors['email']; ?></td>
<?php endif; ?>