par
Fre3z69 » 24 janv. 2013, 09:21
Salutation
Après ton message, j'ai bien réfléchit à ce que me proposé PHP, et j'ai trouver une solution.
Dans la page connexion, je défini si on à cliquer sur "Se souvenir de moi", et je fait mes opérations tel que créer le code SiD, l'insérer dans la Bdd si il n’existe pas etc... Et je défini une variable de
session SiD, me permettant de la passer sur toutes les pages (ou du moins celles dont j'ai besoin de cette valeur.
Ensuite, j'ai créer une page que j'inclus avant même l'entête du site (soit la balise "<!DOCTYPE html>"), et dans cette page je vérifie si on à une variable de session définit et non vide.
Si tel est le cas, alors je créer mon cookie.
Voici ce que ça donne
connexion.php
if (isset($_POST['souvenir']))
{
$Uid = $users_id;
$key = "xxx";
$SiD=sha1($Uid.$key);
$query_id=$cnx->prepare('SELECT user_sid
FROM t_user_sid
WHERE users_id = :users_id');
$query_id->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_id->execute() or die ('Erreur SQL');
// Si il n'y a pas de donnée
if ($query_id->rowCount()==0){
$query_sid=$cnx->prepare('INSERT INTO t_user_sid
(users_id, user_sid)
VALUES (:users_id, :user_sid)');
$query_sid->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_sid->bindValue(':user_sid',$SiD, PDO::PARAM_STR);
$query_sid->execute() or die ('Erreur SQL!');
$query_sid->CloseCursor();
}
// Si il y a des données, on update le SiD si il est différent de celui qu'on a créer à l'instant ( $SiD )
// if ($query_id->rowCount()==0){
// }
$query_id->CloseCursor();
$_SESSION['user_sid'] = $SiD;
}
define_cookie.php
<?php
$expire = time() + 365*24*3600;
$expire_negatif = time() - 60;
$expire_nule = '0';
// on vérifie que la page est celle de connexion
if (isset($_SESSION['user_sid']) && !empty($_SESSION['user_sid'])){
setcookie('uSiD', $_SESSION['user_sid'], $expire);
$_SESSION['user_sid'] = null;
}
// on vérifie que la page est celle de deconnexion
if (isset($_GET["p"]) && $_GET["p"]=='deconnexion'){
if (isset($_COOKIE['lang']) && !empty($_COOKIE['lang'])){
$langue_actuelle = $_COOKIE['lang'];
setcookie('lang', '', $expire_negatif);
setcookie('lang', $langue_actuelle, $expire_nule);
}
if (isset($_COOKIE['uSiD']) && !empty($_COOKIE['uSiD'])){
setcookie ('uSiD', '', $expire_negatif);
}
}
?>
Normalement je pense que c'est la bonne méthode à adopté dans mon cas, sachant que ça fonctionne à merveille.
Mais n'ayant pas un niveau php super élevé, je vous saurais gré, en cas d’erreur, de me le signifier afin que je corrige cela.
Merci beaucoup pour votre aide.
Cordialement
[Edit]
Sinon, tu devrais éviter absolument de faire des redirections javascript générées par du code php. Utilses plutôt la fonction php : header('Location:monfichier.php');
Je le fait ainsi, j'ai eu trop de problème avec les header(), dés fois ça à le même comportement que mon problème, c'est pourquoi je l'utilise ainsi, de toute manière au pire, avec JS, ils clique sur accueil pour revenir à l'accueil si ils veulent, (si ils n'ont pas js activé)
Sinon je veux bien savoir comment tu gère tes redirections afin d'éviter les erreur de header déjà défini etc...
Merci beaucoup
Salutation
Après ton message, j'ai bien réfléchit à ce que me proposé PHP, et j'ai trouver une solution.
Dans la page connexion, je défini si on à cliquer sur "Se souvenir de moi", et je fait mes opérations tel que créer le code SiD, l'insérer dans la Bdd si il n’existe pas etc... Et je défini une variable de [b]session[/b] SiD, me permettant de la passer sur toutes les pages (ou du moins celles dont j'ai besoin de cette valeur.
Ensuite, j'ai créer une page que j'inclus avant même l'entête du site (soit la balise "<!DOCTYPE html>"), et dans cette page je vérifie si on à une variable de session définit et non vide.
Si tel est le cas, alors je créer mon cookie.
Voici ce que ça donne
connexion.php
[php] if (isset($_POST['souvenir']))
{
$Uid = $users_id;
$key = "xxx";
$SiD=sha1($Uid.$key);
$query_id=$cnx->prepare('SELECT user_sid
FROM t_user_sid
WHERE users_id = :users_id');
$query_id->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_id->execute() or die ('Erreur SQL');
// Si il n'y a pas de donnée
if ($query_id->rowCount()==0){
$query_sid=$cnx->prepare('INSERT INTO t_user_sid
(users_id, user_sid)
VALUES (:users_id, :user_sid)');
$query_sid->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_sid->bindValue(':user_sid',$SiD, PDO::PARAM_STR);
$query_sid->execute() or die ('Erreur SQL!');
$query_sid->CloseCursor();
}
// Si il y a des données, on update le SiD si il est différent de celui qu'on a créer à l'instant ( $SiD )
// if ($query_id->rowCount()==0){
// }
$query_id->CloseCursor();
$_SESSION['user_sid'] = $SiD;
}[/php]
define_cookie.php
[php]<?php
$expire = time() + 365*24*3600;
$expire_negatif = time() - 60;
$expire_nule = '0';
// on vérifie que la page est celle de connexion
if (isset($_SESSION['user_sid']) && !empty($_SESSION['user_sid'])){
setcookie('uSiD', $_SESSION['user_sid'], $expire);
$_SESSION['user_sid'] = null;
}
// on vérifie que la page est celle de deconnexion
if (isset($_GET["p"]) && $_GET["p"]=='deconnexion'){
if (isset($_COOKIE['lang']) && !empty($_COOKIE['lang'])){
$langue_actuelle = $_COOKIE['lang'];
setcookie('lang', '', $expire_negatif);
setcookie('lang', $langue_actuelle, $expire_nule);
}
if (isset($_COOKIE['uSiD']) && !empty($_COOKIE['uSiD'])){
setcookie ('uSiD', '', $expire_negatif);
}
}
?>[/php]
Normalement je pense que c'est la bonne méthode à adopté dans mon cas, sachant que ça fonctionne à merveille.
Mais n'ayant pas un niveau php super élevé, je vous saurais gré, en cas d’erreur, de me le signifier afin que je corrige cela.
Merci beaucoup pour votre aide.
Cordialement
[Edit]
[quote="AB"]Sinon, tu devrais éviter absolument de faire des redirections javascript générées par du code php. Utilses plutôt la fonction php : header('Location:monfichier.php');[/quote]
Je le fait ainsi, j'ai eu trop de problème avec les header(), dés fois ça à le même comportement que mon problème, c'est pourquoi je l'utilise ainsi, de toute manière au pire, avec JS, ils clique sur accueil pour revenir à l'accueil si ils veulent, (si ils n'ont pas js activé)
Sinon je veux bien savoir comment tu gère tes redirections afin d'éviter les erreur de header déjà défini etc...
Merci beaucoup