8768 sujets

Développement web côté serveur, CMS

Bonjour a tous. Le sujet n'est pas du tout parlant mais j'ose croire que le contenu pourra rattraper.

J'ai un projet WordPress fonctionnel, et on a créé une page from strach indépendamment de WordPress mais stocker sur le même domaine.

- www.site.com accède au site principal normalement, pas de soucis a ce niveau
- www.site.com/formulaire accède a un formulaire coder from strach pour collecter des données de certains de nos partenaires
- www.site.com/formulaire/admin accède a un petit panel coder from strach pour visualiser, valider ou supprimer un renseignement fourni par le partenaire

jusqu'ici tout test ok.
seulement, étant donnée que la partie codée from strach est indépendante de WordPress, on peut y accéder même sans être authentifier sur WordPress

La question est de savoir comment est-ce qu'on peut lier la session utilisateur de WordPress à la partie codée from scrash de telle sorte que seules les personnes s'étant connecter via WordPress puisse y accéder
Modérateur
Bonjour,

Voici ci-dessous une possibilité (à adapter).

Lorsqu'un utilisateur s'est connecté avec succès à l'interface d'administration de Wordpress, un cookie est créé (par wordpress). Le nom de ce cookie commence par la chaine de caractère "wordpress_logged_in_". Et lorsque l'utilisateur se déconnecte, ce cookie est supprimé (par wordpress).

On peut donc vérifier si un tel cookie existe avant d'afficher un contenu même si la page est indépendante de wordpress. Il faut bien évidemment que le site sous wordpress et la page indépendante de wordpress aient le même nom de domaine pour que ça fonctionne. Et il faut aussi que l'utilisateur se soit au préalable connecté au site sous wordpress.

Par exemple :
<?php
$cookieNames=array_keys($_COOKIE);
$access=null;
foreach($cookieNames as $a)
{
	if(preg_match("/^wordpress_logged_in_/",$a)) {$access=$a;break;}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8"/>
</head>
<body>
<?php if($access) { ?>
<p>Ici mon contenu accessible seulement si l'utilisateur est connecté !</p>
<?php } else { ?>
<p>Accès interdit !</p>
<?php } ?>
</body>
</html>

Amicalement,
Modifié par parsimonhi (04 May 2023 - 23:04)
Meilleure solution
Parfais, ça marche. Merci beaucoup @parsimonhi ????


<?php 
$cookieNames = array_keys($_COOKIE);
$access = null;
foreach ($cookieNames as $a) {
	if (preg_match("/^wordpress_logged_in_/", $a)) {
        $access = $a;
        break;
    }
}
if (!$access) {
    header('Location: /wp-login.php');
    exit();
}

require_once __DIR__ . '/../inc/constants.php';

Modifié par Dimtrovich (05 May 2023 - 10:13)