les cookies ne fonctionnent pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : les cookies ne fonctionnent pas

Re: les cookies ne fonctionnent pas

par itrider » 20 nov. 2020, 19:55

Update : les cookies fonctionnent sur firefox mais toujours pas sur edge et Chrome :(

Re: les cookies ne fonctionnent pas

par itrider » 20 nov. 2020, 19:36

Alors... le problème si ce n'était pas assez clair c'est qu'ils fonctionnent en local mais pas en ligne et je n'ai aucune idée de la ou ça pourrait venir... Si quelqu'un a deja rencontré ce problème votre aide serait la bienvenue ou juste pour me donner des pistes de recherche

Re: les cookies ne fonctionnent pas

par @rthur » 20 nov. 2020, 12:30

Les cookies fonctionnent sur tous les navigateurs.
Donc repars d'une page blanche en prenant juste l'exemple de la doc et construit ensuite ton code autour.

Re: les cookies ne fonctionnent pas

par itrider » 20 nov. 2020, 10:56

Merci beaucoup pour ces conseils que je ne manquerai pas de mettre en œuvre prochainement mais ça ne répond pas à mon problème de base... D'accord il y a un manque de sécurité évident mais ce n'est pas important pour le moment.
Quelqu'un aurait une idée de pourquoi les cookies ne fonctionnent pas sur certains navigateur ?

Re: les cookies ne fonctionnent pas

par @rthur » 19 nov. 2020, 14:10

Ouh là là, il y a quelques trucs à revoir...

Quelques pistes en vrac :
:arrow: Tu utilises $_POST['nom'] dans ta requête SQL pour vérifier le mot de passe au lieu de $_POST['pass']
:arrow: Pas la peine de faire 2 requêtes une pour l'identifiant, l'autre pour le mot de passe, normalement tu fais une seule requête pour rechercher l'identifiant ET le mot de passe, si tu as un résultat=> c'est OK ; si tu n'as pas de résultat => C'est que le mot de passe ou l'identifiant est faux
:!: Il ne faut JAMAIS intégrer dans une requête SQL des variables issues directement d'un utilisateur, il faut toujours utiliser PDO ou mysqli_real_escape_string et encore mieux (en plus, pas à la place) les filtrer préalablement avec filter_input/filter_var. Ceci afin d'éviter les piratages par injections SQL
:!: Tu ne dois JAMAIS stocker un mot de passe en clair dans une base de données, il faut que tu stockes en base de données un hash du mot de passe : https://www.php.net/manual/fr/faq.passwords.php
:!: Tu ne dois JAMAIS stocker un mot de passe dans un cookie, il est préférable d'utiliser une session et là aussi non pas pour stocker le mot de passe dedans, mais juste pour stocker une variable indiquant que tu as déjà vérifié les identifiants et que l'utilisateur est connu.
:idea: Tu peux remplacer les echo "<script>window.location... par des header("Location:...") c'est plus rapide.
:idea: mysqli_close() est optionnel dans ton cas, car il est effectué automatiquement à la fin d'exécution de chaque script PHP

les cookies ne fonctionnent pas

par itrider » 18 nov. 2020, 21:49

Bonjour,

Je suis actuellement sur un site assez basique et je bloque sur un problème. En effet, comme dit dans le titre, les cookies que j'initialise dans une page de connexion ne fonctionnent pas sur mon serveur, alors que tout fonctionne correctement sur la version de dev en local. Il n'y a pas de problèmes de base de données ni de synthaxe (je pense).

Quelque chose d'étrange est que les cookies fonctionnent sur certains naviguateur (edge mobile, internet explorer), mais pas sur les principaux (chrome, firefox, edge PC).

Je pense donc à une restriction de sécurité au niveau des navigateurs (si oui, comment la contourner?) et je précise que mon site n'est pas "sécurisé" (pas https, de tls ou de ssl).

Voila le site : http://bdert-upec.fr/

Voici la page php d'initialisation des cookies :
<?php
$con=mysqli_connect('localhost', 'newuser', 'password', 'sitebde') or die("erreur de connexion");
if (empty($_POST['nom']) or empty($_POST['pass'])){
	echo "<script type=\"text/javascript\"> window.location='connect.php?log=false';</script>";
	echo "erreur dans l'identifiant ou le mot de passe";
}
else {
	$query=mysqli_query($con, "select Identifiant from utilisateur where identifiant ='".$_POST['nom']."'");
	$query2=mysqli_query($con, "select Password from utilisateur where identifiant ='".$_POST['nom']."'");
	$login=mysqli_fetch_assoc($query);
	echo $login['Identifiant'];
 	$motpass=mysqli_fetch_assoc($query2);
 	echo $motpass['Password'];
 	if($_POST['nom']==$login['Identifiant'] && $_POST['pass']==$motpass['Password']) {
 		setcookie("nom", $_POST['nom'], time() +3600*24*60);
		setcookie("pass", $_POST['pass'], time() +3600*24*60);
		echo "<script type=\"text/javascript\"> window.location='index.php';</script>";
 	}
 	else{
		echo "<script type=\"text/javascript\"> window.location='connect.php?log=false';</script>";
 		echo "l'identifiant ou le mot de passe ne correspond pas";
 	}
}
mysqli_close($con);
?>
Merci d'avance pour votre aide !