5568 sujets

Sémantique web et HTML

Pages :
Bonjour,

J'aimerai pouvoir créer une fonction qui permet seulement à une personne enregistrée sur le site et connectée d'ouvrir celui-ci. Je ne trouves pas d'aide à ce sujet sur internet, est-t-il possible de faire cela ?

Si oui, un peu d'aide ne serait pas de refus !

Bonne journée Smiley biggrin
Salut

Pour cela, il suffit d'enregistrer ton utilisateur en $_SESSION php, et sur chaque page tu teste la connexion.

Dès que l’utilisateur se connècte, dans la fonction de connexion tu l'ajoute la session
exemple :
$_SESSION["prenom"] = $form->getPrenom();
$_SESSION["nom"] = $form->getNom();
$_SESSION["connected"] = true;


et sur chaque pages/vues tu tests :
exemple

if($_SESSION["connected"]){

<html> 
blablabla
<div></div>
</html>

}



En gros.
Un grand merci !

Encore juste une question, les fonctions « getname » et tout c’est des fonctions que je dois initialisé ou qui existent ?
non c'est des fonctions propres à mon code ^^
toi je sais pas comment tu récupère les données de ton formulaire, ou encore je sais pas comment tu gère ta connexion.. mais pour l'exemple il fallait bien que j'écrive quelque chose.

Mon code en l'état ne fonctionnera pas du tout hein Smiley smile
il faut que tu l'adapte pour ton projet.
Est-ce que cela marcherait pour récupérer l'username de la personne connectée sur le moment ?


require "mySqlLogin.php";
$username = $_POST['username'];

$req = $bdd->prepare('SELECT id, pass FROM info_client WHERE username = :username');
$req->execute(array(
    'username' => $username));
$resultat = $req->fetch();


$_SESSION['username'] = $username;

Modifié par LeFrometon (07 Feb 2019 - 15:12)
Oui voila par exemple !

parcontre, je laisse lire quelques articles sur les sessions, car il faut utilisé des Session_start() etc... tu verras c'est pas compliqué.
Dis toi qu'en session tu as TOUTES LES INFOS relatif à l'utilisateur... que tu dois ajouter manuellement lorsqu'il se connecte, ou lors de certaines actions.

Par exemple tu dois pouvoir y trouver ses coordonnées, son panier (si tu vends) et pleins d'autre trucs Smiley smile

Les sessions te permette d'avoir ces infos en "permanence" et d'être sûr de travailler sur le bon utilisateur.
Oui, j'utilise déjà session_start() et destroy lors du login et de la déconnexion. Donc maintenant que je récupère l'username comme en haut, je n'ai plus qu'à créer une fonction php du genre:

function connected() {
  if(isset($_SESSION['username']) == true) {
  header(Location: "le lien vers le fichier auquel on peut accéder si l'on est connecté")
}
}


J'ai fait ça vite fait je sais pas vraiment si le code est juste, je l'espère haha
JENCAL a écrit :
Dis toi qu'en session tu as TOUTES LES INFOS relatif à l'utilisateur... que tu dois ajouter manuellement lorsqu'il se connecte, ou lors de certaines actions.

Par exemple tu dois pouvoir y trouver ses coordonnées, son panier (si tu vends) et pleins d'autre trucs Smiley smile

Les sessions te permette d'avoir ces infos en "permanence" et d'être sûr de travailler sur le bon utilisateur.


D'accord je vois déjà plus clair, merci !
LeFrometon a écrit :
Oui, j'utilise déjà session_start() et destroy lors du login et de la déconnexion. Donc maintenant que je récupère l'username comme en haut, je n'ai plus qu'à créer une fonction php du genre:

function connected() {
  if(isset($_SESSION['username']) == true) {
  header(Location: "le lien vers le fichier auquel on peut accéder si l'on est connecté")
}
}


J'ai fait ça vite fait je sais pas vraiment si le code est juste, je l'espère haha


Oui voila tu as compris le concept Smiley smile
Par contre, si ton lien dans ton header est "connu" de quelqu'un et qu'il le saisie directement par l'url, il faut pouvoir l’empêcher.
ton lien pointe forcément vers une page (php de préférence)
dans cette page, tu dois également faire une redirection si l'utilisateur n'est pas loggé..
Mais cette fois la redirection sur VERS ton formulaire de connexion.
J'ai juste un problème, lorsque je ne suis pas logué, la variable $username = $_POST['username'] (qui me permet d'initialiser la variable de session username) me met une erreur, undefined index. Je comprend, c'est car cette variable ne vaut rien si personne n'est connecté sur le moment mais comment empecher cette erreur ?
Oui, car tu dois faire un "test" sur $_POST d'abord, savoir si celui ci existe . Si il existe alors tu fait un test sur l'existence de username dans post.
Modifié par JENCAL (07 Feb 2019 - 15:33)
Comme ceci ?


function connected() {
  if(isset($_SESSION['username']) == true AND !empty($_POST['username'])) {
  header('Location: creation_1_1.php');
}
else {
  header('Location: assets/php/not_connected.php');
}
}

Fait au plus simple


if (!empty($_POST))
{
   $_SESSION['username'] = $_POST['username'];
}

Il est sur quel ligne ton undefined index ?

require "mySqlLogin.php";
$username = $_POST['username']; <<< ----- ICI NON ?

$req = $bdd->prepare('SELECT id, pass FROM info_client WHERE username = :username');
$req->execute(array(
'username' => $username));
$resultat = $req->fetch();


$_SESSION['username'] = $username;
Oui sur cette ligne, enfaite j'ai l'impression que je n'arrive pas à récupérer mes infos de login sur cette page en question.

Lorsque je me logue, je redirige vers une page qui me dis Bonjour $_SESSION['username'], dans ce cas là tout vas bien mais sur l'autre page pas du tout.
Pages :