Üzgünüm söylüyorlar, ama ne olursa olsun bu ne kadar bir ağrı çıktı geçerli HTML zorunda. Iyi öneri bir yardımcı işlevi sarın ve eklemektir. Veya daha da iyisi, iyi bir formu işleme kütüphanesini bulmak gider ve onu kullanır. Bu sorun, defa 1000 çözüldü.
XSS CONCERN: Sizin örnek kod güvenlik açıkları bir numarası vardır. Bana temiz bir form işlemek için basit bir yol göstermek edelim. Aşağıdaki kod işlemek için bir hata geçirmez yol göstermektedir:
- Girişi Okuma
- Onaylama
- Güzel mesajlar ile, hataları işleme
- Formu yeniden doldurmamak
- Vs ..
htmlspecialchars
kullanımını ve unutmayın ENT_QUOTES
gerektiğinde. Ayrıca, cond ? val1 : val2
operatörün kullanımı @
(ki performans için çok kötü olabilir) kullanılmadan ihmal no E_STRICT
uyarılar, var olmasını sağlar.
<?php
$FirstName = trim(isset($_POST['FirstName']) ? $_POST['FirstName'] : '');
$LastName = trim(isset($_POST['LastName']) ? $_POST['LastName'] : '');
$Gender = trim(isset($_POST['Gender']) ? $_POST['Gender'] : '');
$Action = trim(isset($_POST['Action']) ? $_POST['Action'] : '');
$Errors = array();
switch($Action)
{
case 'Process':
// validation code here
if(empty($FirstName))
$Errors[] = 'First Name is required.';
if(empty($LastName))
$Errors[] = 'Last Name is required.';
if($Gender != 'Male' and $Gender != 'Female')
$Errors[] = 'Gender is required.';
if(count($Errors) > 0)
$break;
// save data or whatever here
// Redirect to next page
header('Location: nextpage.php');
exit;
}
?>
<html>
<head>
...
</head>
<body>
<?php if(count($Errors) > 0) { ?>
<div class="error">
<?php foreach($Error as $e) { ?>
<p><?php echo htmlspecialchars($e); ?></p>
<?php } ?>
</div>
<?php } ?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); ?>">
<p>
First Name:
<input type="text" name="FirstName" value="<?php echo htmlspecialchars($FirstName, ENT_QUOTES); ?>" />
</p>
<p>
Last Name:
<input type="text" name="LastName" value="<?php echo htmlspecialchars($LastName, ENT_QUOTES); ?>" />
</p>
<p>
Gender:
<select name="Gender">
<option value=""></option>
<option value="Male" <?php if($Gender == 'Male') echo 'selected="selected"'; ?>>Male</option>
<option value="Female" <?php if($Gender == 'Female') echo 'selected="selected"'; ?>>Female</option>
</select>
</p>
</form>
</body>
</html>