سودا

علت کار نکردن ند پب اچ پی برای اعتبارسنجی یک فرم log in

سودا ۱۳۹۷/۱۲/۱۴ زبان برنامه‌نویسی پی‌اچ‌پی

چرا کد زیربرای اعتبار سنجی فرم log in اجرا نمیشه؟اصلا هیچی هم وارد نمی کنم میره داخل

<?php
include "conn.php";
// define variables ande creat check-input
$user = $_REQUEST['user'];
$pass = $_REQUEST['pass'];
$user = $pass ="";
$userErr = $passErr = "";
// متغییرهایی که وارد کردنشان الزامی است
if ($_SERVER["REQUEST_METHOD"] === "POST") { 
 if (empty($_POST["user"]))
 {$userErr = "Name is required";}
else
 {
 $user = test_input($_POST["user"]);
 // check if name only contains letters and whitespace
 if (!preg_match("/^[a-zA-Z ]*$/",$user))
 {
 $userErr = "Only letters and white space allowed"; 
 }
 }
 if (empty($_POST["pass"]))
 {$passErr = "وارد کردن پسورد الزامی است";}
 else
 {$pass = test_input($_POST["pass"]);}
 }
function test_input($data)
{
 $data = trim($data);
 $data = stripslashes($data);
 $data = htmlspecialchars($data);
 return $data;
}
if (isset($user) )
 {
 
 echo "welcom" .$user;
 echo "<br/>";
 }
 $submit=$_POST['submit'];
?>
<?php
if ($submit > 0) {
 # code...
 fopen("CRM_Database", "profile.php");
}
 else {
 echo "نام کاربری یا رمز عبور اشتباه است!";
 }

?>
پاسخ‌ها به این تاپیک
آرمان حسینی
آرمان حسینیتوسعه دهنده وب، علاقه مند به اوپن سورس
۱۳۹۷/۱۲/۱۴

سلام عزیزم، این چیزی که گذاشتی یکی دوتا مشکل نداره!

من همشو لیست نمی کنم، چون حس می کنم مورد شما ریشه ای هستش، حد اقل توی W3 School یا آموزش های همین سکان آکادمی بیشتر مطالعه کنید.

به کد زیر دقت کن:

<?php
$username = $pass = null;
$userError = $passErr = null;
if ($_SERVER["REQUEST_METHOD"] === "POST") { 
 
 //Check username, or other validations.
 if($_POST['username']){
 echo "Ok, lets go.";
 }else{
 echo "Username is required.";
 }
}
?>

۱- دوتا variable اول یعنی username و pass و دوتای بعدی، برای وضوح برابر با null قرار دادم، این متغیر ها با isset بهت false بر می گردونن! در حالی که اگر یه رشته خالی هم بش بدی true برمی گردونه.

۲- سه تا تگ php داری، اینجا لازم نیست، هرچند که مهم نیست، سعی کن واسه فهم بهتر خودت هم که شده خوانا کد بزنی.

۳- شما welcome رو بعد از شرط بررسی متد post و مستقل از متد و اعتبارسنجی گذاشتی!

۴- سردرگمی توی این کد زیاده :)

۵- توی کدی که گذاشتم اشاره کردم که کار خودتو داخل شرط مربوط به متد post انجام بدی، بهتره با استفاده از function ها کارتو راحت تر کنی.

اگه داری یاد می گیری، قدم به قدم با یه آموزش خوب پیش بیا. موفق باشی.

سودا
سودا
۱۳۹۷/۱۲/۱۴

سلام ممنون از راهنماییتون

درسته اون کدهای پایین غلطه اما این که نذاره اگه فیلدها خالی بودن بره داخل و ارور رو نشون بده عین کد w3 هست

هرکاری میکنم نمیشه:(

در پاسخ به

آرمان حسینی
آرمان حسینیتوسعه دهنده وب، علاقه مند به اوپن سورس
۱۳۹۷/۱۲/۱۵

این نمونه کد با کمی تغییر هست که از W3 Schools برداشتم، قسمت ارتباط با DB رو خودتون می تونید اضافه کنید:

<?php
$username = $password = null;
$usernameError = $passwordError = null;
$errorsCount = 0;

if ($_SERVER["REQUEST_METHOD"] === "POST") { 
 $username = test_input($_POST['username']);
 $password = test_input($_POST['password']);
 //Check username and password, or other validations.
 if(IsNullOrEmptyString($username)){
 $usernameError = "username is required";
 $errorsCount += 1;
 }
 if(IsNullOrEmptyString($password)){
 $passwordError = "password is required";
 $errorsCount += 1;
 }

 //check errors and if there is no error, redirect ro welcome.php
 if(!$errorsCount){
 //check username and password in database, then use session for login flag
 header('Location: welcome.php');
 }
}

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

function IsNullOrEmptyString($str){
 return (!isset($str) || trim($str) === '');
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
 .error{
 color:red;font-size:14px;
 }
 </style>
</head>
<body>
 <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
 <div>
 <label for="username">username:</label>
 <input type="text" name="username" id="username">
 <p class="error">
 <?php echo $usernameError ?>
 </p>
 </div>
 <div>
 <label for="password">password:</label>
 <input type="password" name="password" id="password">
 <p class="error">
 <?php echo $passwordError ?>
 </p>
 </div>
 <button type="submit">Submit</button>
 </form>
</body>
</html>

در پاسخ به

سودا
سودا
۱۳۹۷/۱۲/۱۵

من php رو تازه یاد میگیرم به جز w3 چه منابعی رو پیشنهاد می کنید؟

در پاسخ به

آرمان حسینی
آرمان حسینیتوسعه دهنده وب، علاقه مند به اوپن سورس
۱۳۹۷/۱۲/۱۵

https://www.tutorialspoint.com/php/

و همینطور دوره مقدماتی که آقای مرادی توی دوره های آموزشی سکان آکادمی قرار دادن.

در پاسخ به

سودا
سودا
۱۳۹۷/۱۲/۱۵

مرسی لطف کردین

در پاسخ به