Bonjour,

J'ai suivi le tuto concernant la création d'un portofolio de A à Z mais hiersoir j'ai commencé la partie 4 comme il se faisait tard j'ai arrété
Ce matin en voulant continué sur ma lancé, j'arrive plus a me connecté via le formulaire login.php
Dans le débug session j'ai toujours en visualisation un csrf

array (size=1)
  'csrf' => string 'f8237b339b74f99b43b98b89f9d772e6' (length=32)

Ma page login.php est la suivante

<?php
$auth = 0;
include 'lib/includes.php';
/**
* TRAITEMENT DU FORMULAIRE
**/
if(isset($_POST'username']) && isset($_POST'password'])){
    $username = $db->quote($_POST'username']);
    $password = sha1($_POST'password']);
    $select = $db->query("SELECT * FROM users WHERE name=$username AND password='$password'");

    if($select->rowCount() > 0){
    $_SESSION'Auth'] = $select->fetch();
    setFlash('Vous être maintenant connecté');
    header('Location:'.WEBROOT.'admin/index.php');
    die();
    }
}
/**
* Inclusion du header
**/
include 'partials/header.php';
?>
    <form action="#" class="login" method="post">

    <div class="form-group">
        <label for="username">Nom d'utilisateur</label>
    <?= input('name'); ?>
    </div>

    <div class="form-group">
        <label for="password">Mot de passe</label>
        <input type="password" class="form-control" name="password" id="password">
    </div>

    <button type="submit">Connexion</button>
</form>
<?php include 'lib/debug.php';?>
<?php include 'partials/footer.php'; ?>

et le fichier auth.php

<?php
session_start();
    if(!isset($auth)){
        if(!isset($_SESSION'Auth']'id'])){
            header('location:'.WEBROOT.'login.php');
            die();
    }
}
    if(!isset($_SESSION'csrf'])){
        $_SESSION'csrf'] = md5(time() + rand());

    }

    function csrf(){
        return 'csrf='.$_SESSION'csrf'];

    }

    function csrfInput(){
        return '<input type="hidden" value="'.$_SESSION'csrf'].'" name="csrf">';

    }

    function checkCsrf(){
        if(
            (isset($_POST'csrf']) && $_POST'csrf'] == $_SESSION'csrf']) ||
            (isset($_GET'csrf']) && $_GET'csrf'] == $_SESSION'csrf']))
            {
            return true;
            }
            header('Location:' .WEBROOT.'csrf.php');
            die();

        }
?>

Merci de votre aide
Cafreunion

4 réponses


cafreunion
Auteur
Réponse acceptée

Re,
Le problème a été résolu, une erreur de ma part sur un champs du formulaire

<div class="form-group">
        <label for="username">Nom d'utilisateur</label>
    <?= input('name'); ?>
    </div>

j'ai mis name au lieu de username a ce niveau

<div class="form-group">
    <?= input('name'); ?>
 </div>

Cafreunion

Pourrait-on avoir les fichiers source manquants ?

Re,

Ci-joint les fichiers manquante

Session.php

<?php
function flash(){
    if(isset($_SESSION'Flash'])){
        extract($_SESSION'Flash']);
        unset($_SESSION'Flash']);
        return "<div class='alert alert-$type'>$message</div>";
    }
}

function setFlash($message,$type = 'success'){
    $_SESSION'Flash']'message'] = $message;
    $_SESSION'Flash']'type'] = $type;
}

index.php

<?php
$auth =0;
include 'lib/includes.php';
include 'partials/header.php';
?>

<h1>Mon portfolio en PHP !</h1>

<?php 
include 'lib/debug.php';
include 'partials/footer.php';
?>

Merci de votre aide
Cafreunion

Je pensais aussi a includes.php, debug.php, header.php, footer.php...