اذهب إلى المحتوى
  • 0

التحقق من المدخلات في PHP

مرام طاهر

السؤال

مرفق الكود كامل 

photo_٢٠٢٢-٠٤-٢٨_١٤-١٧-٤١.jpg

photo_٢٠٢٢-٠٤-٢٨_١٤-٢٣-١٤.jpg

 

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
#div1{

    border: solid 2px;
    padding: 20px;
    color: black;
    background-color: #f2d7ff;}
    body{ font-family: Arial;
    font-style: normal;
    text-transform: capitalize;
    background-color:#dea8f9  ;


</style>
</head>
<body>  

<?php
// define variables and set to empty values
$ageErr = $emailErr = $genderErr =  $languagesErr = "";
$age = $email = $gender = $comment = $languages = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["age"])) {
    $ageErr = "age is required";
  } else {
    $name = test_input($_POST["age"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$age)) {
      $ageErr = "Only letters and white space allowed";
    }
  }
  
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }
    
  

  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<div id= "div1"><fieldset>
  <legend>form</legend>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  


  age: 
  <input type="number"  name="age" min="10" max="100">
  <span class="error">* <?php echo $ageErr;?></span>
  <br><br>

  E-mail: <input type="text" name="email">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>

   Gender:
  <input type="radio" name="gender" value="female">Female
  <input type="radio" name="gender" value="male">Male
  <input type="radio" name="gender" value="other">Other
  <span class="error">* <?php echo $genderErr;?></span>
  <br><br>

  
   languages:
      <input type="checkbox"  name="Arabic Language">Arabic Language
      <input type="checkbox" name="FMaths"> Maths
      <input type="checkbox"  name="English Language">English Language
      <input type="checkbox" name="French"> French
      <span class="error"> <?php echo $languagesErr;?></span>
      <br><br>

  Comment: <textarea name="comment" rows="5" cols="40"></textarea>
  <br><br>


 
  <input type="submit" name="submit" value="Submit">  
</form></fieldset>

</body>
</html> 

 

تم التعديل في بواسطة Sam Ahw
تنسيق الشيفرة البرمجية وتوضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

بنفس الطريقة التي اتبعتها في كتابة الأخطاء للحقول الأولى تقوم بإضافة متغيّرين لرسائل الخطأ المطلوبة عند استقبال طلب Post:

$languagesErr = $commentErr = "";

وبعدها يجب إضافة آلية التحقق من المدخلات:

if (empty($_POST["comment"])) {
    $genderErr = "Comment is required";
  } else {
    $comment = test_input($_POST["comment"]);
  }

وبنفس الطريقة لحقل languages، مع وجود خطأ بسيط لديك هو أن الحقول checkbox يجب أن تحوي الخاصية value ليتم الاحتفاظ بقيمة الخيار الفعلي:

languages:
      <input type="checkbox"  name="Arabic Language">Arabic Language
      <input type="checkbox" name="FMaths"> Maths
      <input type="checkbox"  name="English Language">English Language
      <input type="checkbox" name="French"> French
      <span class="error"> <?php echo $languagesErr;?></span>
      <br><br>


يجب تعديلها لتصبح:

<input type="checkbox" id="arabic" name="arabic" value="Arabic Language">
<label for="arabic">Arabic Language</label><br>

وأعتقد أن الشيفرة البرمجية التي أرفقتها ناقصة ففيها بعض الأخطاء والتوابع الغير موجودة ضمن الصفحة ولكن هذه هي فكرة الحل بشكل عام.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

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

×   جرى استعادة المحتوى السابق..   امسح المحرر

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...