Мой пользовательский вход работает нормально, мой вход в систему с правами администратора вообще не работает - PullRequest
0 голосов
/ 05 мая 2020

Привет, это всего лишь небольшой проект, который я делаю для своего саморазвития. Я создал вход пользователя, и я попытался войти в систему для администратора для «панели управления администратора».

Как только я нажимаю кнопку «Отправить» после ввода сведений, отображается сообщение «Электронная почта и пароль не найдены»

Данные пользователя хранятся в той же базе данных, что и администратор, я не понимаю, почему это не так » t работает?

Это код html для входа:

Вход администратора

<div class="main">
    <div class="container">
                <h1 class="display-3">Admin Sign In</h1>
        <form action="admin_action.php" method="post">
        <label for="uname"><b>Email</b></label><br>
        <input type="text" placeholder="Email" name="email" required><br>
        <label for="psw"><b>Password</b></label><br>
        <input type="password" placeholder="Password" name="pass" required><br><br>
        <input class="btn btn-primary" type="submit" value="Submit"><br><br>        
        </form>
    </div>
</div>

это php код:

admin_action. php:

<?php # PROCESS LOGIN ATTEMPT.

# Check form submitted.
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' )
{
  # Open database connection.
  require ( 'includes/connect_db.php' ) ;

  # Get connection, load, and validate functions.
  require ( 'admin_tools.php' ) ;

  # Check login.
  list ( $check, $data ) = validate ( $link, $_POST[ 'email' ], $_POST[ 'pass' ] ) ;

  # On success set session data and display logged in page.
  if ( $check )  
  {
    # Access session.
    session_start();
    $_SESSION[ 'admin_id' ] = $data[ 'admin_id' ] ;
    load ( 'adminpanel.php' ) ;
  }
  # Or on failure set errors.
  else { $errors = $data; } 

  # Close database connection.
 #mysqli_close( $link ) ; 
}

# Continue to display login page on failure.
include ( 'adminlogin.php' ) ;

?>

и admin_tools. php код:

<?php # LOGIN HELPER FUNCTIONS.

# Function to load specified or default URL.
function load( $page = 'adminlogin.php' )
{
  # Begin URL with protocol, domain, and current directory.
  $url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . dirname( $_SERVER[ 'PHP_SELF' ] ) ;

  # Remove trailing slashes then append page name to URL.
  $url = rtrim( $url, '/\\' ) ;
  $url .= '/' . $page ;

  # Execute redirect then quit. 
  header( "Location: $url" ) ; 
  exit() ;
}

# Function to check email address and password. 
function validate( $link, $email = '', $pwd = '')
{
  # Initialize errors array.
  $errors = array() ; 

  # Check email field.
  if ( empty( $email ) ) 
  { $errors[] = 'Enter your email address.' ; } 
  else  { $e = mysqli_real_escape_string( $link, trim( $email ) ) ; }

  # Check password field.
  if ( empty( $pwd ) ) 
  { $errors[] = 'Enter your password.' ; } 
  else { $p = mysqli_real_escape_string( $link, trim( $pwd ) ) ; }

  # On success retrieve admin_id from 'admin' database.
  if ( empty( $errors ) ) 
  {
    $q = "SELECT admin_id FROM admin WHERE email='$email' AND pass=SHA1('$pass')" ;  
    $r = mysqli_query ( $link, $q ) ;
    if ( @mysqli_num_rows( $r ) == 1 ) 
    {
      $row = mysqli_fetch_array ( $r, MYSQLI_ASSOC ) ;
      return array( true, $row ) ; 
    }
    # Or on failure set error message.
    else { $errors[] = 'Email address and password not found.' ; }
  }
  # On failure retrieve error message/s.
  return array( false, $errors ) ; 
}

таблица данных

1 Ответ

0 голосов
/ 05 мая 2020

SHA1 генерирует 40-байтовый ha sh, ваш столбец передачи определяется как VARCHAR (30). Этого недостаточно, поэтому ha sh не будет соответствовать значению в базе данных.

Определите его как VARCHAR (256), тогда даже если вы решите использовать лучший ha sh al go столбец будет достаточно большим для га sh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...