[RESOLU] Un identifiant et mot de passe à 30 000 000 clients.

Eléphant du PHP | 53 Messages

22 févr. 2014, 23:30

Bonsoir,

Aureusms a écrit :
Si tu sais t'assurer qu'il s'agit de la bonne personne, pourquoi ne pas lui faire cliquer quelque part pour validation
et transmettre dans le même temps l'identifiant et le mot de passe ?
--------
Oui c'est justement ce que je voudrais faire mais ça ne se passe pas comme cela.
J'aurais préféré sans lui transmettre Login et Pass mais là je n'ai pas réussi.

Voilà ce qui se passe chronologiquement :
1) le client clique un lien "relais" qui lui permettra de recevoir Login et Pass
(L'objectif le client est l'accès au fichier protégé par htaccess.)

2) il reçoit Login et Pass que je lui envoie, si possible masqués.

3) Il suffit d'y placer le Login et Pass dans l "alerte" authentifcation requise de htaccess. (Acces Restreint. ...)
et de cliquer valider ou OK (là je ne sais pas faire)

A priori, je dois arriver à intercepter Login et Pass et les placer dans des variables mais ensuite ???
Comment les positionner dans les 2 champs réservés de l'alerte du message de htaccess ?
Je ne suis pas sûr qu'il y ait une solution ?
Géry

ViPHP
ViPHP | 1996 Messages

22 févr. 2014, 23:50

J'ai du mal à comprendre : si tu obliges à aller sur une page protégée par htaccess, le login et mot de passe dans ce fichier htaccess sont-ils identiques pour tout le monde ?
Si ta page est protégée par htaccess, tu as déjà une sorte d'identification. Ce que tu veux faire c'est intercepter ce qu'il tape dans authentification htaccess et ensuite refaire une validation personnelle avec ce que le client a rempli ?
Si c'est cela tu peux récupérer en PHP ce que le client a rempli grâce aux variables suivantes :

$_SERVER['PHP_AUTH_USER'] // pour le login
$_SERVER['PHP_AUTH_PW'] // pour le mot de passe

astuce trouvée ici : http://www.commentcamarche.net/faq/4795 ... n-htaccess
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 2278 Messages

23 févr. 2014, 16:06

Je viens de faire des tests et je persiste à dire que se servir de gpg est de loin le plus simple dans ce cas:
Aucune restriction par htaccess
Suppose ,qu'on dispode de gpg (tets sous fedora 19)
Génération de clef:
gpg --gen-key

Code : Tout sélectionner

Sélectionnez le type de clef désiré : (1) RSA et RSA (par défaut) (2) DSA et Elgamal (3) DSA (signature seule) (4) RSA (signature seule) Quel est votre choix ? [b]1[/b] les clefs RSA peuvent faire entre 1024 et 4096 bits de longueur. Quelle taille de clef désirez-vous ? (2048) [b]1024[/b] La taille demandée est 1024 bits Veuillez indiquer le temps pendant lequel cette clef devrait être valable. 0 = la clef n'expire pas <n> = la clef expire dans n jours <n>w = la clef expire dans n semaines <n>m = la clef expire dans n mois <n>y = la clef expire dans n ans Pendant combien de temps la clef est-elle valable ? (0) La clef n'expire pas du tout Est-ce correct ? (o/N) [b]o[/b] Une identité est nécessaire à la clef ; le programme la construit à partir du nom réel, d'un commentaire et d'une adresse électronique de cette façon : « Heinrich Heine (le poète) <[email protected]> » Nom réel : [b]Billard[/b] Adresse électronique : [b][email protected][/b] Commentaire : Vous avez sélectionné cette identité : « Billard <[email protected]> » Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? [b]o[/b] Une phrase de passe est nécessaire pour protéger votre clef secrète. [b]ici j'ai tapé un mot de passe[/b] (****) De nombreux octets aléatoires doivent être générés. Vous devriez faire autre chose (taper au clavier, déplacer la souris, utiliser les disques) pendant la génération de nombres premiers ; cela donne au générateur de nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie. gpg: clef 78B45AE0 marquée de confiance ultime. les clefs publique et secrète ont été créées et signées. gpg: vérification de la base de confiance gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s), modèle de confiance PGP gpg: profondeur : 0 valables : 1 signées : 0 confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u. pub 1024R/78B45AE0 2014-02-23 Empreinte de la clef = 7136 4D25 9FA7 9894 EE8C 6337 5D74 D652 78B4 5AE0 uid Billard <[email protected]> sub 1024R/8D44731A 2014-02-23
Certificat de révocation
$ gpg -o revoke.asc --gen-revoke Billard

Code : Tout sélectionner

sec 1024R/78B45AE0 2014-02-23 Billard <[email protected]> Faut-il créer un certificat de révocation pour cette clef ? (o/N) [b]o[/b] choisissez la cause de la révocation : 0 = Aucune raison indiquée 1 = La clef a été compromise 2 = La clef a été remplacée 3 = La clef n'est plus utilisée Q = Annuler (Vous devriez sûrement sélectionner 1 ici) Quelle est votre décision ? [b]0[/b] Entrez une description facultative, en terminant par une ligne vide : > [b]revocation[/b] > Cause de révocation : Aucune raison indiquée [b]revocation[/b] Est-ce d'accord ? (o/N) [b]o[/b] Une phrase de passe est nécessaire pour déverrouiller la clef secrète de l'utilisateur : « Billard <[email protected]> » clef RSA de 1024 bits, identifiant 78B45AE0, créée le 2014-02-23 sortie forcée avec armure ASCII. Certificat de révocation créé. Veuillez le déplacer sur un support que vous pouvez cacher ; toute personne accédant à ce certificat peut l'utiliser pour rendre votre clef inutilisable. Imprimer ce certificat et le stocker ailleurs est une bonne idée, au cas où le support devienne illisible. Attention quand même : le système d'impression
utilisé pourrait stocker ces données et les rendre accessibles à d'autres.
Utilisation
gpg --output votrecle.asc --armor --export 78B45AE0

gpg --import votrecle.asc

Code : Tout sélectionner

gpg: clef 78B45AE0 : « Billard <[email protected]> » n'est pas modifiée gpg: Quantité totale traitée : 1 gpg: non modifiées : 1
Cryptage
gpg -o nom_de_fichiercrypté --recipient Billard --encrypt nom_de_fichier_non_crypté
Evidemment il faut déplacer le fichier en clair.
Lecture
gpg --decrypt nom_de_fichiercrypté
Et demande de mot de passe (le même pour tous celui tapé ici (****)))
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

25 févr. 2014, 01:30

Bonsoir à tous,
'
sirakawa :
Tout cela me semble trop compliqué pour moi pour l'instant.
Merci pour toutes tes explications.
Peut-être plus tard ?
'
Aureusms
Oui, presque tout le monde aura accès aux pages protégées (à celles là) car j'en ai d'autres non accessibles.
Il n'y a que "mes clients" qui pourront y aller. (et quelques tricheurs).
Je vois que tu ne m'as compris. Je m'explique autrement :
'
Voici la suite des opérations, chronologiquement :
1) le client clique un lien sensé lui donner accès au fichier protégé : l'objectif final.
2) Je lui présente un petit formulaire où il doit d'abord me fournir son N° de sécu (par exemple)
3) si je le reconnais, un vrai client, je lui envoie Login et Pass, (pour htaccess) qu'il devra saisir.
(Je pourrais lui envoyer en caché)
4) le client clique alors sur un lien réel devant donner accès au fichier protégé.
5) il reçois la demande d'authentification de htacess. (genre de boîte de dialogue)
6) il est donc en mesure de compléter : Login et Pass, pour htaccess
7) il clique enfin sur Envoyer ou OK ?
-
Mon but serait d'automatiser un peu en supprimant le 6) et le 7)
Le "jeu" consiste à placer Login et Pass dans la boîte de dialogue d'htacces.
Malheureusement htaccess n'est du Java Script !
Est-ce possible ?
Géry

Mammouth du PHP | 2278 Messages

25 févr. 2014, 09:05

S'il est compliqué de taper 4 commandes, puis une par fichier à proréger (encore que ça puisse être automatiséà, je suis le pape.
Donc bidoulle des trucs dont la dimplivité va à l'encontre de l'efficacité.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

26 févr. 2014, 11:00

Bonjour sirakawa

Ne sois pas fâché.
Je vois bien que tu as fait des tests et passé du temps sur le sujet. J'en suis gêné.
C'est simple, et même s'il n'y avait qu'une seule commande à ajouter, je ne sais pas faire ce que tu proposes.
Je ne sais même pas ce que veut dire : "se servir de gpg"
Je "joue" dans la cour des débutants, tout le monde m'a dit de passer en php5. Je vais le faire.
'
Par ailleurs, je suis toujours impressionné par le travail, la patience, le dévouement des intervenants de ce site.
Le temps que cela représente, sûrement en prenant sur leur vie privée.
Plus qu'un remerciement, je leur tire mon chapeau respectueusement.
Restons en là.
Cordialement

Mammouth du PHP | 2278 Messages

26 févr. 2014, 11:39

Non, je râlais parce que je trouvais ça extrêmement simple (c'est l'explication interminable qui donne l'impression que c'est compliqué).
Mais je n'interviens que sur des sujets qui m'intéressent ou m'amusent.
En lisant ta réponse, j'ai pensé à une autre solution.
Alors tu pourrais essayer ça (il n'y a guère qu'à compléter):
<form method = 'post' action = 'identifier.php'>
<label for 'identite'>Tapez votre zizifiant</label>
<!-- normalement avec required = 'required' le champ doit être rempli-->
<input type = 'text' name ='identite' required= 'required' />
<button type = 'submit'>M'envoyer en l'air</button>
</form>
identifier.php contient:
une fonction à rédiger tester_identite($identite)
le code php qui fait le travail : j'ai juste mis des exit mais onpeut ajouter un message, permettre un nouvel essai....
<?PHP
/**
Là je vais au plus simple
Je suppose que tu as une méthode pour repérer une identité juste : contient uncertain nombre de caractères + a tel caractère à une position précise... On verra après si tu trouves cette solutionà ton goût.
*/
function tester_identite ($identite)
{
	if ($identite == 1234)
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}


/*normalement le required = 'required' devrait assurer que le champ a été rempli, mais sait-on jamais?*/
if ( isset($_POST['identite']))
{
	$identite = $_POST['identite'];
	//ici tu te débrouilles pour tester (résultat true ou false)
	$ok = tester_identite($identite);
	if ($ok == true)
	{
		session_start();
		$_SESSION['login'] = "reserve"; // mettre le login que tu as dans htaccess
		$_SESSION['passe'] = "&_6çt-è_ç%LMopi";//mettre le password que tu as dans htacess
		header('Location: http://localhost/tests/lire.php');	//juste besoin de changer 'url
	}
	else
	{
		exit;
	}

} 
else
{
exit;
}
?>
lire.php
<?PHP
session_start();
$login = $_SESSION['login'];
$passe = $_SESSION['passe'];
print "$login";
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

27 févr. 2014, 11:46

Bonjour sirakawa,
Merci pour ta réponse qui m'a réchauffé.
Cette fin de semaine est très chargée par ailleurs, laisse moi un peu de temps.
A+

Eléphant du PHP | 53 Messages

28 févr. 2014, 12:57

Bonjour sirakawa,
Je n'ai pas résisté à l'envie de savoir.

J'ai testé ton petit programme sur mon site, en situation réelle.
Il fonctionne mais il manque toujours l'étape finale de mise en relation du Login et de Pass, avec htaccess.
( tu les as mis dans les variables de session mais ça n'apporte rien)
Les opérations 1 à 7 de mon message précédent (du 25/02) fonctionnent déjà.
Grâce à ton post je peux maintenant résumer le problème à une ligne.

Est il possible de faire quelque chose qui réaliserait : (du point de vue fonction) ?

header('Location: http:// ...... /protegepw/lire.php?$Login&$Pass'); // avec lire.php protégé par htaccess

Rappel:
- Il n'est pas question de sécurité
- il s'agit de filtrer et de bloquer 99,9 % des visiteurs
- C'est le "cahier des charges" que je me suis fixé, un cas d'école.
Bien à toi
Géry

Mammouth du PHP | 2278 Messages

28 févr. 2014, 16:24

J'ai vu quelque chose, mais ça passe par curl (un module de php qui permet de se" connecter et de communiquer avec différents types de serveurs") .
Il faudrait essayer ça:
<?PHP
phpinfo();
?>
et regarder si tu as une partie CURL (inutile d"='aller plus loin que la constatation.)
Si tu l'as, je crois que tu es au bout de tes peines, sinon, il faudrait modifier l'installation de php.

OUFFFFF!
Voilà ce que j'ai fait:
ARCHITECTURE DU SERVEUR
/var/www/html/passes

passes est le répertoire à protéger
dans passes il y a:

.htaccess

Code : Tout sélectionner

AuthUserFile /var/www/html/passes/.htpassword AuthName "Restricted Access" AuthType Basic Require valid-user
.htpassword
fabriqué avec : htpasswd -c .htpassword autorise
(en étant dans le répertoire passes pour créer l'utilisateur autorise mot de passeautor)

index.html
<HTML>
COUCOU
</html>
Pour que .htaccess fonctionne, il faut vérifier httpd.conf (c'est AllowOverride All qui permet à .htaccess d'être pris en compte) (commentaires commencant par # enlevés ici)
J'ai ajouté :

Code : Tout sélectionner

<Directory "/var/www/html/passes"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
dans /var/www/html il y a index.php
<?PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/passes/index.html");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "autorise:autor");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
print "$output";
$info = curl_getinfo($ch);
curl_close($ch);
?>
Trois remarques:
I Comme je suis le roi des flemmards, j'ai mis .htpassword dans le répertoire protégé, ce que déconseille la doc d'Apache;
mais AuthUserFile /var/www/html/passes/.htpassword serait à remplacer par un chemin complet.
II Comme tu as démarré avec .htaccess, j'ai prolongé. Mais la doc Apache dit qu'on peut faire la même chose en plus rapide en créant dans httpd.conf une section <directory> plus sophistiquée que ce que j'ai fait.
III le mot de passe est mis en clair dans curl_setopt($ch, CURLOPT_USERPWD, "autorise:autor");

Si ça te convient, il faudrait peut-être mettre ta solution dans le forum contributions.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

01 mars 2014, 13:30

Bonjour sirakawa,

Là je pense que c'est à ma portée, mais n'allons pas trop vite. Certains points doivent être vérifiés :
1) Je n'ai pas encore muté vers php5. Est-ce que je peux le faire en php4 ? je pense que non.
(J'ai installé PHP5 (Easy php) sur un autre PC, mes tests ont démarré. C'est en cours)
2) Mon site est sur FREE et j'ai cru comprendre que FREE ne fonctionnait qu'en PHP4 ?
(J'ai posé la question sur le forum de free depuis 10 jours : pas de réponse)
Pour faire le test je pourrais y mettre une simple page index.php comprenant des fonctions php5
et un fichier .htaccess comprenant la ligne "AddType x-mapp-php5 .php" ou "SetEnv PHP_VER 5" ?
3) FREE a des fichiers htaccess un peu particuliers semble-t'il ?
(si je fais des modifs, ça risque de ne plus fonctionner mais il suffit de faire des essais)
4) Certains points de ta réponse sont encore un peu obscures mais je suis partant.

Première étape :
Voilà ce que j'ai vu sur phpinfo()
En local, je tourne avec EsayPHP1.8 PHP4 : pas de CURL.

En local sur un autre PC, php5
CURL support enabled
CURL Information 7.30.0

Sur le site de FREE donc en réel :
CURL support enabled
CURL Information libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10
------------
Ci-dessous le contenu mes 3 fichiers htaccess imposés par FREE au départ.
1) mon .htaccess
PerlSetVar AuthFile /protegepw_oto/htpasswd.txt (où protegepw_oto représente le dossier protégé)
AuthName "Accès réservé aux adhérents"
AuthType Basic
require valid-user

2) mon .htacces (un seul s)
deny from all

3) mon htpasswd.txt (fichier.txt dans lequel on trouve les associations identifiant:mot_de_passe en clair)
log:1234
abcde:fghij
(en exemples)
--------

Tu me dis : "Voilà ce que j'ai fait:
ARCHITECTURE DU SERVEUR
/var/www/html/passes où passes est le répertoire à protéger"
C'est une information ou je dois mettre cette ligne dans htaccess en remplacement de PerlSetVar .....
Je n'ai pas compris.

Tu me dis :
".htpassword fabriqué avec : htpasswd -c .htpassword autorise"
Je n'ai jamais fait. Quel sera le codage/hachage ?
Je comprends la commande à faire (j'ai vu http://httpd.apache.org/docs/2.2/programs/htpasswd.html )
mais pour le mode console de la commande : htpasswd [path_htpasswd_file] [login]"
Comment s'y prendre ?
J'ai vu sur " http://aspirine.org/htpasswd.html" qu'il était possible de le créer manuellement mai je préfèrerais
ta méthode, à la console si j'ai bien compris.

Tu me dis :
" il faut vérifier httpd.conf (c'est AllowOverride All qui permet à .htaccess d'être pris en compte)
(commentaires commencant par # enlevés ici)
J'ai ajouté : .....<Directory "/var/www/html/passes"> ect .... </Directory>"
Je sais le faire sur mon PHP4 et sur mon PHP5 en local mais comment le vérifier sur FREE et surtout
comment le modifier sur FREE ?

C'est tout pour la 1ère étape.
Si tu trouves que je suis "trop lourd", n'hésite pas à me le dire. je m'arrêterai.
Merci

Mammouth du PHP | 2278 Messages

01 mars 2014, 22:00

ARCHITECTURE DU SERVEUR == ARCHITECTURE DE MON SERVEUR
/var/www/html/passes où passes est le répertoire à protéger"
en plusieurs endroits il y a des références à remplacer par ce qui correspond à ton architecture.

Est-ce que tu peux trouvfer un php.ini chez Free ?
Oui, il vaut mieux créer ole fichier htpassword avec le logiciel adapté

trouve sur le net (vca vaut quoi?)
Concernant free.fr :
Free a modifié son script pour que les mots de passe ne soient plus cryptés, en terme de sécurité c'est n'importe quoi mais bon que voulez-vous ?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

04 mars 2014, 16:56

Bonjour sirakawa,

Je suis passé en PHP5 (EasyPHP-DevServer-14.1VC9) en local et sur le site FREE (avec php 1 dans un .htaccess sur la racine)
Aucun problème, sauf une instruction ereg à remplacer par preg_match.
Sur FREE il n'est pas possible d'accéder directement au fichier php.ini mais il serait possible de modifier certains paramètres à l'aide de commandes du genre : init_set() ou set_error_handler(); ou set_time_mimit(60).
Comment les passer ?
Dans ces conditions, je me propose de tester d'abord en local. Possible ?

Deuxième étape (en local sur EasyPHP) :
J'ai créé .httpasswd et les mes identifiant/passw (en MD5). ça fonctionne.

tu me dis " 3) index.html Code html <HTML> COUCOU </html> " ça représente quoi ? à mettre sur "protegepw_oto" ?

tu me dis "il faut vérifier httpd.conf (c'est AllowOverride All qui permet à .htaccess d'être pris en compte)
j'ai ajouté : ..... "
Voilà ce que j'ai fait dans httpd.conf: en bleu original, en rouge, partie que j'ai ajoutée :
======= situé à la fin du fichier =======
# Virtual Hosts
## Virtualhost localweb
<VirtualHost 127.0.0.1>
DocumentRoot "C:/prog_gery/EasyPHP-DevServer-14.1VC9/data/localweb"
ServerName 127.0.0.1
<Directory "C:/prog_gery/EasyPHP-DevServer-14.1VC9/data/localweb">
Options FollowSymLinks Indexes
AllowOverride All
Order deny,allow
Allow from 127.0.0.1
Deny from all
Require all granted
</Directory>


<Directory "C:\prog_gery\EasyPHP-DevServer-14.1VC9\data\localweb\projects\protegepw_oto/.htpasswd">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

</VirtualHost>
Include ../../data/conf/apache_virtual_hosts.conf

===== fin du httpd.conf ================

orgaisation de mon site, partant de Racine : EN LOCAL "C:\prog_gery\...... " (configuration type OVH et non FREE)
_____-dossier "projects" avec le fichier "index.php"
_________fichiers divers "xxxxxxxx.php"
_________-dossiers_publics (plusieurs)
_________- dossier "protegepw_oto" (dossier protégé pas htacess)
______________fichier ".htacess"
______________fichier ".htpasswd" // J'ai bien noté que ce n'était pas recommandé de le laisser là
______________-dossier "les_autorises"
__________________fichier "index_autorises.php"
__________________fichiers divers "yyyyyyyy.php"
__________________-dossiers_prives (plusieurs)
------------------------------------------------------------------------------------------------------------------------

Il doit me manquer quelque chose ou je n'ai pas tout compris. Je ne sais pas aller plus loin.

Si tu peux m'orienter .....
Merci.

PS : je viens de me rendre compte que dans httpd.conf j'ai des anti-slash ??? Je vais refaire des tests
16h55 Tests faits : exactement la même chose.

Mammouth du PHP | 2278 Messages

04 mars 2014, 23:15

1) Si tu mets un document là:
C:/prog_gery/EasyPHP-DevServer-14.1VC9/data/localweb
Supposons qu'il s'appelle : test.html et qu'il contienne :
<html>
<body>
Je suis test.html
</body>
</html>
Y-as-tu accès en tapant comme url:
http:127.0.0.1/test.html
(si ça ne marche pas, tu peux essayer en virant la partie en rouge d eton php.ini)
2) Ta partie en rouge
<Directory "C:\prog_gery\EasyPHP-DevServer-14.1VC9\data\localweb\projects\protegepw_oto/.htpasswd">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ce serait pas plutot
<Directory "C:\prog_gery\EasyPHP-DevServer-14.1VC9\data\localweb\projects\protegepw_oto">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

3) Il ne faut pas s'exciter sur Free: puisqu'il mettent des .htaccess, c'est que le httpd.conf le permet...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 53 Messages

05 mars 2014, 12:55

Bonjour sirakawa,

Point 1 : Oui ça foncfionne. Avec ou sans la "partie rouge" dans httpd.conf
point 2 : Tu as raison, il y avait le nom du fichier en trop, (avec des slash et non des anti-slash)
J'ai mis <Directory "C:/prog_gery/EasyPHP-DevServer-14.1VC9/data/localweb/projects/protegepw_oto">
Mais ça ne change rien. Tu as bien remarqué que je l'avais mis dans :
# Virtual Hosts
## Virtualhost localweb
<VirtualHost 127.0.0.1>
DocumentRoot "C:/prog_gery/EasyPHP-DevServer-14.1VC9/data/localweb"
Je n'en étais pas sûr.

point 3 : OUI. Même si ça fonctionnne en local, sur FREE ce sera une autre affaire.
-
Si tu veux en rester là il faut me le dire. J'ai quand même appris pas mal de choses.
-
Si tu veux continuer, il me reste à voir le lien entre la réponse d'un client que j'ai identifiée comme valide
et lui ouvrir l'accès aux "pages privées".
En ce moment, je n'ai pas utilisé CURL, je n'ai rien modifié dans php.ini.
J'ai mis tes quelques lignes php dans mon fichier ... /projects/protegepw_oto/index_autorises.php
<?PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/passes/index.html");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "autorise:autor");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
print "$output";
$info = curl_getinfo($ch);
curl_close($ch);
?>
ça ne fait rien et je ne vois pas la suite.
Mon gros problème, je ne sais pas lire l'anglais pour bien apprendre.
Bien à toi.