Vous n'êtes pas identifié(e).
Bonjour à vous toutes et tous.
Je voudrais faire ceci :
J'ai deux sous-domaine sur le même domaine configuré de cette façon :
http://domaine.com/~compte1/
http://domaine.com/~compte2/
sur le même ordinateur et sur le même serveur sous Windows avec WAMP.
Mon problème est que je cherche à obliger le passage par le compte1 et rediriger vers compte2.
Je sais faire cela. Ce que je ne sais pas faire, c'est empêcher de passer directement par le compte2.
Je réfléchi sur cela depuis quelques jours et je tests des choses. Mais, ça ne marche pas.
Les HTTP_REFERER ce n'est pas très fiable et pas toujours fonctionnel.
J'ai pensé au CAPTCHA, cependant, il faudrait que le code soit donné au compte1 et que la saisie se fasse sur le compte2. Le but est de ne pas donner accès au compte2 si la personne n'a pas passée par le compte1.
Les sessions, ça semble pas marcher ni les cookies.
Je cherche une solution que je ne trouve pas.
De l'aide serait appréciée et soyez indulgent pour ma demande s.v.p. Merci.
Dan
Salutations
Hors ligne
C'est une page pour se connecter ou autre le compte1 ?
Si c'est juste une page pour exécuter un script je la mettrai directement sur le compte 2 pour ma part.
Sinon tu peux toujours générer un hash et le passer dans l'url. Tu le vérifies sur le compte2 et si le hash n'est pas correct tu rediriges avec un header sur le compte1.
Si tu préfères un captcha c'est le même principe.
En gros pour ton problème il faut un échange d'informations sécurisées. Donc c'est soir par l'url avec quelque chose qui ne s'invente pas facilement. Soit par base de donnée à laquelle tu accèdes des deux domaines.
Hors ligne
Merci pour votre réponse rapide. Je précise.
C'est un intro qui se trouve sur le URL du compte 1
Et la page principale sur le URL du compte 2.
Je veux absolument qu'on passe sur le compte de l'intro avant de passer par la page principale.
J'ai pas vraiment d'idée comment je pourrais faire ça.
Le Hash me plait bien. Sur la page 1 le Hash serait régénéré et comment la page 2 peut avoir le même Hash?
A moins que j'invente un code qui serait transmis par url et que le code serait testé sur la page 2 par un IF()...
Sans vouloir être téteux, si vous avez des indices ou solution, ça serait sympat.
Message modifié :
Je pourrais au compte 2 faire ceci :
La page 1 envoyer par url à la variable à $access.
donc, si je vais sur le compe2 sans passer par le compte1.... la variable ne serait vide.
C'est une hypothèse. J'imagine que c'est de même. J'essais et je mets des efforts.
C'est une page pour se connecter ou autre le compte1 ?
Si c'est juste une page pour exécuter un script je la mettrai directement sur le compte 2 pour ma part.Sinon tu peux toujours générer un hash et le passer dans l'url. Tu le vérifies sur le compte2 et si le hash n'est pas correct tu rediriges avec un header sur le compte1.
Si tu préfères un captcha c'est le même principe.En gros pour ton problème il faut un échange d'informations sécurisées. Donc c'est soir par l'url avec quelque chose qui ne s'invente pas facilement. Soit par base de donnée à laquelle tu accèdes des deux domaines.
Dernière modification par dan4 (10-01-2010 12:04:22)
Salutations
Hors ligne
Après test et effort, j'ai réussi à faire ceci et ça fonctionne :
Ceci est la page2:
La page1 de départ qui contient le URL seulement comme ceci :
Tant que le code est statique et ne change pas, je peux permettre l'accès à la page2
sauf que je souhaite que les visiteurs passe par une page pas par un url directe.
Peut-etre une variable envoyé par la page1 à la page2.. la je bloque.
Je me réponds moi-même cependant, je démontre que j'avance dans ma requête
et cela peut permettre à d'autres de me corriger.
Merci pour votre réponse rapide. Je précise.
C'est un intro qui se trouve sur le URL du compte 1
Et la page principale sur le URL du compte 2.Je veux absolument qu'on passe sur le compte de l'intro avant de passer par la page principale.
J'ai pas vraiment d'idée comment je pourrais faire ça.
Le Hash me plait bien. Sur la page 1 le Hash serait régénéré et comment la page 2 peut avoir le même Hash?
A moins que j'invente un code qui serait transmis par url et que le code serait testé sur la page 2 par un IF()...Sans vouloir être téteux, si vous avez des indices ou solution, ça serait sympat.
Message modifié :
Je pourrais au compte 2 faire ceci :
<?php
if($access==$_GET['jeveux']) { die('vrai'); } else { die('faut'); }
?>La page 1 envoyer par url à la variable à $access.
donc, si je vais sur le compe2 sans passer par le compte1.... la variable ne serait vide.
C'est une hypothèse. J'imagine que c'est de même. J'essais et je mets des efforts.
xTG a écrit :C'est une page pour se connecter ou autre le compte1 ?
Si c'est juste une page pour exécuter un script je la mettrai directement sur le compte 2 pour ma part.Sinon tu peux toujours générer un hash et le passer dans l'url. Tu le vérifies sur le compte2 et si le hash n'est pas correct tu rediriges avec un header sur le compte1.
Si tu préfères un captcha c'est le même principe.En gros pour ton problème il faut un échange d'informations sécurisées. Donc c'est soir par l'url avec quelque chose qui ne s'invente pas facilement. Soit par base de donnée à laquelle tu accèdes des deux domaines.
Salutations
Hors ligne
La solution la plus simple et la plus fiable consiste à passer par une base de donnée.
Tu générès un hash sur le timestamp et tu le stockes dans la base de donnée.
Tu rediriges ton utilisateur vers le second domaine avec le hash dans l'url et à l'arrivée tu vérifies qu'il existe dans la base de donnée.
Sinon tu peux le faire sur la date, donc sans utiliser de base de donnée. Tu fait un hash sur l'heure et tu vérifies sur l'autre page (mais il faut gérer le possible changement d'heure entre les deux, tu peux vérifier avec hash(heureActuelle) et si cela ne colle pas avec hash(heureActuelle-1) pour le cas où la personne aurait été sur le domaine 1 à 12h59 par exemple).
Hors ligne
Je vais tenter d'essayer les deux possibilités. Dans le domaine des bases de données, je ne suis pas familier. Donc, je vais essayer avec l'autre. heure actuelle serait date('t'); quelque chose du genre. Merci beaucoup... :-)
Salutations
Hors ligne
dans la page 2 :
Si je détermine l'heure et que je fait un HASH pour ajouter dans le URL quand je tappe dans le navigateur, c'est OK. Mais si je créé un lien dans une page, comment je peux faire?
J'utilise swishmax dans le fichier page1.php.... mon URL est dans un fichier Flash.
Un bouton dans flash :
Comment je pourrais faire pour pour appliquer le HASH dans un url dans un fichier.
Javascript peut-être? vu que dans un flash, le PHP est un peu difficile.... je supose.
Quoi même comme code dans le fichier qui va demander l'accès au fichier page2.php?
J'avance bien et je suis très content de cela.
Salutations
Hors ligne
[Résolu]
Voici ce dont j'ai fait pour terminer le poste principal :
- J'ai adopté l'approche HASHAGE en utilisant $_GET pour le URL.
A partir d'un document fait en flash, j'ai mis comme URL sur la page1 le code suivant :
Edité avec Swishmax 2.
Le contenu de codepass.php est :
Situé dans le même répertoire que mon fichier FLASH.
Et pour fini, la page principal page2.php :
Le fichier page2.php est situé sur un autre domaine. J'ai choisi le HASH whirlpool qui a un très grand nombre de caractères. Le Hashage se fait à l'heure pour le moment. Il me reste plus qu'à faire un timestamp pour que lorsque j'entre dans la page2.php le temps commence toujours au début et laisse 10 minutes pour se rendre à destination; une sorte de session.
Je voudrais remercier xTG pour m'avoir encourragé à faire ce travaille là. J'ai du travailler fort mais ses indications étaient plutôt intéressantes et pertinentes. MERCI.
Je pense que le tout va aider d'autres personnes et aussi cela peut servir à d'autres applications. C'est relativement simple mais quand on ne le sait pas, c'est difficile.
Petit commentaire au webmestre du forum, j'ai pas trouvé la place pour indiquer RESOLU alors, je l'ai indiqué dans le message.
Dernière modification par dan4 (10-01-2010 15:11:09)
Salutations
Hors ligne
J'ai réussi à régler mon problème dans l'ensemble.
Sauf avec le flash ou swishmax.
J'arrive pas à envoyer vers site2.
Comment créer mon bouton en tenant compte que je dois envoyer avec la variable?
C'est à dire récupérer la variable et l'envoyer par url ensuite.
Salutations
Hors ligne
Je dirais que oui vu que c'est remplacer le header par un fichier flash comme ceci (swishmax2) :
Est le fichier site1.php :
<?php
$code=hash("Sha256","phrase");
header('location:site2.php?'.$code);
// Remplacer le header par un lien dans un fichier flash fait avec Swishmax.
?>
Est le fichier site2.php :
<?php
$code=hash("Sha256","phrase");
if(isset($_GET[$code])) { echo "Oui accès"; } else { die('Non accès'); }
?>
Salutations
Hors ligne
Bonjour,
cette discussion me pose question concernant le login de mon site.
J'ai un simple formulaire d'identification sur ma page index.php et je fais les tests des identifiants dans login.php.
Si c'est correct, je fais une redirection vers l'accueil.
Le pb, c'est que si je tape http://www.123kiss.fr/accueil.php , ça me logge directement sans avoir vérifié mes identifiants !
Heureusement, ça me logge avec le compte de l'utilisateur défini dans le cookie...
Faut il obligatoirement utiliser la méthode que vous avez décrite dans cette discussion afin de sécuriser le login de mon site ?
Merci d'avance !
Dernière modification par Ralph303 (26-01-2010 13:44:39)
Hors ligne
La méthode que j'ai utilisé était pour faire une comparaison de URL entre la page 1 et 2 dont les pages sont dans des domaines différents.
Accès à la page 2 que si je passe par la page 1.
La meilleure méthode trouvée et testé est la date encodée dans le URL .
Ceci est la page 1 :
Ceci est la page 2 :
Contenu HTML ou PHP
<?php
} else { echo '<img src="http://***/notice.php">'; die(''); }
?>
A partir du moment que quelqu'un essais de passer par la page 2 sans passer par la page 1, une redirection
se fait à notice.
Le url que ça donne :
http://***/page2.php compare le url avec $_get[$code]
Le défaut de cette méthode est que tu dois allouer un certain temps comme un minimum de 10 minutes
pour le changement de code. J'ai mis 30 minutes. Entre-nous, la raison que j'utilise cette méthode est
qu'il est possible de placer tout un site dans un IFRAME et si toi-même tu dois utiliser un IFRAME. Bien placer
un javascript pour empecher le IFRAME va te poser un problème.
Ça remplace pas une méthode à SESSION PHP mais ça dépanne drôlement et tu peux même combiner
les deux.
Mon questionnement, je pense que : j'ai 30 minutes pour entrer ou bien, c'est un 30 minutes par rapport
à l'heure que je entre. D'après moi, c'est à la 1re minute jusqu'à 30. donc, j'ai 30 minute pour entrer.
Quelqu'un pourrais s'il copie mon code entrer dans les 30 minutes.
Je vois mal quelqu'un placer le url dans son site avec un IFRAME puisqu'il devra connaître le code utilisé.
Et j'ai choisi le Hash Sha256 avec un grain de sel ajouté.
Tu ajoutes aussi à la page 2 en haut de page, un petit code pour ne pas permettre l'accès directe à la page au cas où tu utiliserait un include.
si ton include contient le lettres "access". Si quelqu'un va dans ton url qui a "access", il sera refusé.
Mais si le tout se trouve dans une seule page comme page2.php, juste le test de URL est suffisant.
Je ne pense pas que ça peut répondre directement à ta question mais ça pourrais te donner des idées.
D'après ce que j'ai vu, c'est surement un problème de session que tu as et j'en suis pas l'expert la dedans.
Ce que j'ai décris ci-haut, c'est quelque chose que j'ai testé avec succès.
Maintenant, pour ma part, je vais utiliser un mini-forum comme PunBB pour intégrer le système de
gestion de Membres puisque les scripts spécialisés dans la gestion de Membres sont soient incomplets ou ne
fonctionne pas. Et tant qu'à ajouter ce système, aussi bien ajouter un petit forum dans mes choses.
Autre chose, cette méthode, si quelqu'un réussi à deviner le code ou s'il se connecte pour avoir le code, il
pourrait se connecter et s'il le donne à quelqu'un, cette personne pourrait aussi se connecter. Mais, s'il quitte
et revient, il ne pourras pas puisque le code change aux 30 minutes. Si tu mets mettons 5 minutes, là tu auras un problème de temps de connectivité avec ta page 2. La personne n'aura pas le temps de bien lire ce qu'il y a
sur la page 1. Il devra actualiser sa page à nouveau pour avoir un nouveau code. Mais, tu l'indique dans la page1
que la personne a seulement 5 minutes pour se connecter sans être obligé d'obtenir un nouveau code.
Cette méthode est transparente et l'internaute ne vois pas rien sauf un code dans le url si tu n'utilise pas dans
un iframe.
On m'a parlé de la méthode Captcha mais ce dont j'en ai déduit est que d'une page à l'autre, ce ne serait pas
le même code.
Simuler la méthode Captcha avec la méthode ci-haut dans un formulaire.. la personne reçois ce code par courriel
et le copie dans le input du formulaire. c'est une idée. Mais un peu compliqué de recevoir un courriel à chauqe fois. Ou bien faire apparaitre le code dans la page1 et la personne fait copie coller dans le formulaire.
Une idée.. désolé pour ce roman mais c'est avec des détails qu'on apprends.
Si quelqu'un a une idée pour raffiner la méthode ci-haut, je suis preneur et je serais content de l'utiliser et de la partager avec d'autres.
Ou bien, si quelqu'un a un SECTION MEMBRE complet, je suis preneur aussi.. genre validation, etc.
A bientôt.
Bonjour,
cette discussion me pose question concernant le login de mon site.
J'ai un simple formulaire d'identification sur ma page index.php et je fais les tests des identifiants dans login.php.
Si c'est correct, je fais une redirection vers l'accueil.Le pb, c'est que si je tape http://www.123kiss.fr/accueil.php , ça me logge directement sans avoir vérifié mes identifiants !
Heureusement, ça me logge avec le compte de l'utilisateur défini dans le cookie...Faut il obligatoirement utiliser la méthode que vous avez décrite dans cette discussion afin de sécuriser le login de mon site ?
Merci d'avance !
Dernière modification par dan4 (26-01-2010 14:31:19)
Salutations
Hors ligne
Merci beaucoup pour cette réponse détaillée !
Je pense qu'il y a un bug (un de plus...) dans ma gestion du login avec les variables de session et les cookies.
Car, normalement, la variable de session $_SESSION['logge'] est mise à true seulement si le login est validé dans login.php, donc, ça ne
devrait pas être possible d'être loggé directement en tapant http://www.123kiss.fr/accueil.php .
Vu que je reste sur le même domaine, je ne dois pas avoir le même pb que toi, enfin, je pense car je suis loin de maîtriser ce dont on parle...
Merci encore !
Hors ligne
Je maitrise plus en tant que TESTER et MODIFICATEUR de scripts que dans créer.
Je visualise plus et je comprends quand j'ai un script complet et que je dois le modifier à ma convenance
ou pour le débugger.
J'aimerais bien faire un GESTION DE MEMBRE mais c'est beaucoup de travail que je ne maitrise pas en PHP.
Mais, si j'ai déjà le script. Je suis capable de l'améliorer ou de le réparer. c'est biz mais j'ai cette habilité.
Sans en avoir les connaissances, ça du bon sens ce que tu dis pour tes sessions.
Faut s'assurer des versions PHP, ça été une galère entre les versions de PHP. J'utilise la 5.2, avant j'était à 5.3
et m'a-ton dis qu'à partir de la version 5.3 jusqu'à 6, il y avais des bugs très importants à propos des SESSIONS.
Merci beaucoup pour cette réponse détaillée !
Je pense qu'il y a un bug (un de plus...) dans ma gestion du login avec les variables de session et les cookies.
Car, normalement, la variable de session $_SESSION['logge'] est mise à true seulement si le login est validé dans login.php, donc, ça ne
devrait pas être possible d'être loggé directement en tapant http://www.123kiss.fr/accueil.php .Vu que je reste sur le même domaine, je ne dois pas avoir le même pb que toi, enfin, je pense car je suis loin de maîtriser ce dont on parle...
Merci encore !
Salutations
Hors ligne
En fait, les variables de session sont très simples à utiliser.
Pour ce faire, il faut mettre <?php session_start(); ?> au début de chaque script qui les utilise. Et rien avant ! Sinon tu as une erreur.
Ensuite, comme ce sont des variables dans un tableau superglobal, elles sont accessible dans n'importe quel script de ton site.
$_SESSION['ma_variable']=valeur; ou $variable=$_SESSION['ma_variable']; marchent très bien...
Ca évite de passer des variables dans différents scripts par url: mon_script.php?variable=valeur
Y'a rien de bien compliqué...
Par exemple, je met $_SESSION['userid'] à la valeur du userid pour pouvoir savoir qui je suis dans chaque script.
Ou bien $_SESSION['logge'] à la valeur true ou false pour savoir si je suis loggé ou pas.
J'espère que ça t'a aidé dans ta compréhension des variables de session.
a++
Hors ligne
Si je comprends bien, je pourrais remplacer ceci :
PAGE 2 QUI VÉRIFIE SI C'EST CORRECT L'ACCESS :
<?php
$coeff = (int)(date("i") / 30);
$minutesvoulues = $coeff * 30;
$code=hash("Sha256",$minutesvoulues."code");
if(isset($_GET[$code])) {
?>
Contenu HTML ou PHP
<?php
} else { echo '<img src="http://***/notice.php">'; die(''); }
?>
en suivant votre explication sur les SESSIONS.
J'aimerais bien, si vous pourriez me donner un exemple S.V.P. serait apprécié.
Cela pourrait me permettre de mieux comprendre et d'élaborer plus.
Un ébauche à partir de mon petit script si possible.
En fait, les variables de session sont très simples à utiliser.
Pour ce faire, il faut mettre <?php session_start(); ?> au début de chaque script qui les utilise. Et rien avant ! Sinon tu as une erreur.
Ensuite, comme ce sont des variables dans un tableau superglobal, elles sont accessible dans n'importe quel script de ton site.
$_SESSION['ma_variable']=valeur; ou $variable=$_SESSION['ma_variable']; marchent très bien...Ca évite de passer des variables dans différents scripts par url: mon_script.php?variable=valeur
Y'a rien de bien compliqué...
Par exemple, je met $_SESSION['userid'] à la valeur du userid pour pouvoir savoir qui je suis dans chaque script.
Ou bien $_SESSION['logge'] à la valeur true ou false pour savoir si je suis loggé ou pas.J'espère que ça t'a aidé dans ta compréhension des variables de session.
a++
Salutations
Hors ligne
Le sessions ne fonctionnent que sur un domaine précis.
Donc si tu changes de domaines les variables sont perdues. ^^
Donc si tes dossier ~blablabla sont des dossiers pas de soucis, par contre si ce sont des sous-domaine les variables de session sont différentes pour chaque domaine.
Hors ligne
Merci.. cela, je l'avais compris lors d'une précédente explication au début.
Ce que je voulais, c'était la possibilité de faire la même chose mais entres les pages d'un même domaine.
Mes dossier sont /~dossier, donc les sessions pourrait fonctionner.
En faite, tous mes dossiers sont dans un seul domaine avec des sous-dossier : /~user1 /~user2 etc.
page1 du dossier /~user1 etc..
Si quelqu'un peut me donner un exemple avec le code que j'ai fournis dan mon précédent message très détaillés..
j'aimerais bien et serait apprécié.
Pour ce qui est des domaine.ext, je sais quoi faire pour les dépendances entre-eux.
Bon, je sens que je vais tété et supplier... sérieux, j'aime bien ce forum. en plus il est convivial et les gens sont corrects.
Le sessions ne fonctionnent que sur un domaine précis.
Donc si tu changes de domaines les variables sont perdues. ^^
Donc si tes dossier ~blablabla sont des dossiers pas de soucis, par contre si ce sont des sous-domaine les variables de session sont différentes pour chaque domaine.
Dernière modification par dan4 (26-01-2010 21:17:15)
Salutations
Hors ligne
Ah mais pas de soucis pour ça, il existe un joli tutorial sur le site. ^^
http://www.phpdebutant.org/article47.php
Hors ligne