2017-02-13 2 views
0

이제 로그인 시스템을하고 싶습니다. 나는 사용자가 존재한다면 테이블 admin에서 체크하고 싶다. 시스템 로그인을 코드했는데 작동하지 않습니다. 어떤 조언이나 해결책도 환영합니다.로그인 시스템, 아이디와 비밀번호 읽기 후 로그인

안부 A.V

<?php 
    ob_start(); 
    session_start(); 
?> 

<html lang="en"> 

<head> 
    <title>Foredeck Login.com</title> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 

    <style> 
     body { 
      padding-top: 40px; 
      padding-bottom: 40px; 
      background-color: #6495ED; 
     } 

     .form-signin { 
      max-width: 330px; 
      padding: 15px; 
      margin: 0 auto; 
      color: #000000; 
     } 

     .form-signin .form-signin-heading, 
     .form-signin .checkbox { 
      margin-bottom: 10px; 
     } 

     .form-signin .checkbox { 
      font-weight: normal; 
     } 

     .form-signin .form-control { 
      position: relative; 
      height: auto; 
      -webkit-box-sizing: border-box; 
      -moz-box-sizing: border-box; 
      box-sizing: border-box; 
      padding: 10px; 
      font-size: 16px; 
     } 

     .form-signin .form-control:focus { 
      z-index: 2; 
     } 

     .form-signin input[type="text"] { 
      margin-bottom: 0 px; 
      border-bottom-right-radius: 0; 
      border-bottom-left-radius: 0; 
      border-color: #000000; 
     } 

     .form-signin input[type="password"] { 
      margin-bottom: 10px; 
      border-top-left-radius: 0; 
      border-top-right-radius: 0; 
      border-color: #000000; 
     } 

     h3 { 
      text-align:; 
      color: #000000; 
     } 

     h1 { 
      text-align:; 
      color: #000000; 
     } 
    </style> 

</head> 

<body> 
    <div class="container form-signin"> 

     <?php 
      include("bdconnect_Foredeck.php"); 
      $link=Mysqli_connect($host,$login,$pass,$dbname); 
      $msg = ''; 

      if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) { 

       $Identifiant = $_POST['username']; 
       $MotPasse = $_POST['password']; 

       $recherche= "SELECT * FROM admin WHERE Identifiant ='$Identifiant' And Mdp_Admin='$MotPasse'"; 
       mysqli_query($link,$recherche); 
       $result= mysqli_query($link,$recherche); 

       while($row = mysqli_fetch_assoc($result)){ 

        $Identifiant = $row["Identifiant_Admin"]; 
        $MotPasse = $row["Mdp_Admin"]; 
       } 
       if ($_POST['username'] == $Identifiant['username'] && $_POST['password'] == $MotPasse['password']) { 
       $_SESSION['valid'] = true; 
       $_SESSION['timeout'] = time(); 
       $_SESSION['username'] = 'foredeckadmin'; 
       $msg ='Connexion Réussite'; 
       echo " 
       <script type='text/javascript'> 
        alert('Connexion Réussite'); 
        window.location = 'foredeck.php'; 
       </script>"; 

       header("refresh:3 location: foredeck.php"); 
      } 
      else if ($_POST['username'] == 'Isabelle' && $_POST['password'] == 'Isabelle1'){ 
       $_SESSION['valid'] = true; 
       $_SESSION['timeout'] = time(); 
       $_SESSION['username'] = 'foredeckadmin'; 
       $msg ='Connexion Réussite'; 
       echo " 
       <script type='text/javascript'> 
        alert('Connexion Réussite'); 
        window.location = 'foredeck_superadmin.php'; 
       </script>"; 

       header("refresh:3 location: foredeck_superadmin.php"); 
      } 


      else { 
       $msg='Identifiant ou Mot de Passe incorrecte'; 
        $msg = " 
        <script type='text/javascript'>alert('$msg')</script>"; 
       } 
      } 
     ?> 
    </div> <!-- /container --> 

    <div class="container"> 

     <form class="form-signin" role="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post"> 
      <h4 class="form-signin-heading"><?php echo $msg; ?></h4> 
      <h1>[email protected]</h1> 
      <h3>Entrer l'identifant et le mot de passe:</h3> 
      <input type="text" class="form-control" name="username" placeholder="Identifiant " required autofocus><br/> 
      <input type="password" class="form-control" name="password" placeholder="Mot de passe" required> 
      <br> 

      <button class="btn btn-lg btn-primary btn-block" type="submit" name="login"> 
       Se connecter 
      </button> 
     </form> 
    </div> 
</body> 
</html> 
+1

존재 여부를 알 수를 얻을 수 'Mdp_Admin = 'MotPasse'' 대신에? – affaz

+0

글쎄, 나는 그들을 위해 변수를 저장해야 할 것 같아요. [도움을주는 스크린 샷] (https://cdn.discordapp.com/attachments/240225788715204609/280663850485940224/unknown.png) –

+0

이것은 매우 도움이 될 수 있습니다. http://stackoverflow.com/questions/34358552/login-system- with-mysqli –

답변

0

사용 mysqli_num_rows 사용자 이름과 암호가 select` 쿼리는`Mdp_Admin = '$ MotPasse'` 수를 의미`에

<?php 
      include("bdconnect_Foredeck.php"); 
      //establishing connection 
      $link=mysqli_connect($host,$login,$pass,$dbname); 
      //display error in connection if any 
      if (mysqli_connect_errno()) 
      { 

       echo “MySQLi Connection was not established: ” . mysqli_connect_error(); 

      }  
      $msg = ''; 

      if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) 
      { 

      $Identifiant = $_POST["username"];  
      $MotPasse = $_POST["password"];   

      $recherche= "SELECT * FROM admin WHERE Identifiant ='$Identifiant' And Mdp_Admin='$MotPasse'";   

      $result= mysqli_query($link,$recherche); 

      $check_user = mysqli_num_rows($result); 
      //checks if the username and password exists 
      if($check_user>0){ 


       $_SESSION['valid'] = true; 
       $_SESSION['timeout'] = time(); 

       $msg ='Connexion Réussite'; 
       //redirect to admin 
       if($_POST['username'] == 'Isabelle' && $_POST['password'] == 'Isabelle1'){ 
        $_SESSION['username'] = $Identifiant; 
        echo "<script type='text/javascript'>alert('Connexion Réussite'); 
        window.location='foredeck_superadmin.php'; </script>"; 

        header("refresh:3 location: foredeck_superadmin.php"); 
       } 
       else 
       { 
        //redirect to homepage 
        $_SESSION['username'] = 'foredeckadmin'; 
        echo "<script type='text/javascript'>alert('Connexion Réussite'); 
        window.location='foredeck.php'; </script>"; 

        header("refresh:3 location: foredeck.php"); 



       } 
      } 
      else { 
       //error message 
       $msg='Identifiant ou Mot de Passe incorrecte'; 
       $msg = "<script type='text/javascript'>alert('$msg')</script>"; 
      } 
     } 
    ?> 
+0

경고 : mysqli_fetch_array()는 매개 변수 1이 mysqli_result, boolean이 C : \ wam 인 것으로 기대한다. p \ www \ Foredeck \ login.php 101 행 : $ row = mysqli_fetch_array ($ result); @affaz –

+0

@AV 내 대답을 확인하십시오 .. 편집했습니다. 계산 만하면됩니다 .PSthats는 오류의 이유가 아닙니다. 그러나 이것은 당신이 시작하는 것이 더 간단 할 것입니다. – affaz

+0

괜찮습니다. 해결되었습니다. 어쨌든 @affaz 오류 코드는 이미 너무 좋습니다. –

0

이 당신을 도울 수있는 시스템입니다. 어쨌든, 이것이 가장 안전한 시스템이 아닙니다. 기본적으로 웹 사이트/응용 프로그램에 로그인해야하는 정보가 들어있는 데이터베이스를 만들어야합니다.

사용자 이름에 $ _POST [ 'email']를 사용하고 암호에는 $ _POST [ 'password']를 사용했음을 유의하십시오. 당신이 사용자의 데이터베이스에 새 사용자를 삽입 할 때

<?php 
session_start(); 
$host = ''; //HOST OF YOUR DATABASE; 
$user = ''; //USERNAME TO ACCESS YOUR DATABASE; 
$pass = ''; //PASSWORD TO ACCESS YOUR USERNAME; 
$database = ''; //DATABASE TO CONNECT; 
$conn = new mysqli($host,$user,$pass,$database); 
if(isset($_POST["login"])) { 
$email=$_POST["email"]; 
$sql = "SELECT * FROM users WHERE email='$email'"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) 
{ 
while($row = $result->fetch_assoc()) { 
    if($row["password"]==md5($_POST["password"])) { 
     $_SESSION['your_site_username'] = $row['email']; 
     header("Location: YOUR PROFILE PAGE"); 
    } 
    else { 
     $error = "Your password is incorrect."; 
     echo $error; 
    } 
} 
} 
else { 
$error = "There is no user with this email."; 
echo $error; 
} 
?> 

보안은

, 당신은 MD5 방법으로 암호를 해시해야합니다. php.ini 파일에서 magic_quotes_gpc 옵션을 활성화하여 SQL Injection의 피해를 입지 않도록하십시오. SQL Injection은 Type Casting에서도 피할 수 있습니다.이 문서는 http://php.net/manual/en/language.types.type-juggling.php입니다. 이 당신을 도울 수 있습니다 How can I prevent SQL injection in PHP?

+0

이유 이전에 해킹하기 쉬운 암호 해시 대신 암호 해시에'password_hash()'와'password_verify()'를 사용하지 말 것. –

+0

@MasivuyeCokile 그것은 해결책이 될 수 있지만 처음에 말했듯이 이것은 새로운 PHP 사용자를위한 간단한 스크립트이다. – DamiToma

+0

나는 당신의 답변에 따라 내 게시물을 편집 했으니 약탈해라. 예 PHP에 새로 추가 된 것 –