Bonjour @rthur (et aussi le forum),
Merci de la piste des include et il semble que j'avance (un peu), au bout d'un mois de tests.
Comme tu le suggérais, j'ai revu mon code.
Résumons: pour le login des membres dans mon code de platform-members, si le ID et PW sont bons, dans mon test avec texte seulement, le membre est envoyé vers une page php nommée page_authorized_visitor.php qui ne contient que le texte suivant:
Contents of the home page for authorized visitor
Et cela marche (seulement en apparence?)
Bon bien sûr ce que je veux c'est qu'après bons ID et PW le membre soit envoyé vers la page d'acceuil de l'espace membres (sous-dossier xxxxxx) c-a-d xxxxxx/afichier-destination.php et le code de afichier-destination.php...
(1) commence par un contrôle avec le code
<?php require ("../security.php"); ?>
(2) contient plein d'include dans le code qui ne sont pas liés à la procédure de login
donc après ce résumé, si dans mon code de platform-members après le code de rentrée ou de sortie...
if (isset($_SESSION['user']['user'])) {
j'ai
include('xxxxxx/afichier-destination.php');
//include('page_authorized_visitor.php');
j'obtiens le message d'erreur qu'une session a déjà été ouverte avant session_start(); dans security.php (comme déjà écrit)
et cela même si je remplace
session_start();
par
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
ou par
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
et au contraire pour (inversion)
//include('xxxxxx/afichier-destination.php');
include('page_authorized_visitor.php');
je n'obtiens plus de message d'erreur mais sur wampserver, j'ai le message:
Contents of the home page for authorized visitor
Bon si c'est un problème d'include/require dans mon fichier de destination, je suis bloqué et piégé car je ne peux changer ma page afichier-destination.php qui fonctionne bien aujourd'hui avec un autre système de login (avec un fichier txt, sans table de membres) et qui contient toutes les requêtes sur la base de données scientifique de l'espace membre.
Enfin avant dernier test, si je désactive dans platform-members.php le code
//require('headermysql.php');
sachant que headermysql.php n'est que du code html, sans include bien sûr
et que dans wampserver je clique sur platform-members.php alors je suis basculé vers la page de login-failed!
Enfin dernier test, si dans le code ci-après de platform-members.php j'ajoute:
$members_area = "xxxxxx/afichier-destination.php";
puis à la fin du code après // Authorized visitor, je met:
header("Location: $members_area");
et je désactive le code de include comme:
//include('xxxxxx/afichier-destination.php');
alors j'ai un message d'erreur surprenant:
http://testphpmysql/xxxxxx/page_unautho ... isitor.php
page non trouvée ou inexistante
car il cherche dans le dossier espace membres le fichier page_unauthorized_visitor.php, ne l'y trouve pas (normal, alors qu'il est dans le dossier racine)... c'est tellement surprenant (pour moi) que je mentionne ce test (et pas de nombreux autres concernant les includes que j'ai aussi tentés)
voici mes codes...
pour platform-members.php
Code : Tout sélectionner
<?php
/******************Config***********************/
$v_editor_name = "1111111111";
$v_editor_email = "222222222";
$v_url = "3333333333";
$v_web_name = "4444444444";
$v_pages_dir = "pages";
/**********************************************/
session_start();
//if(!isset($_SESSION)) session_start();
/*if (session_status() == PHP_SESSION_NONE) {
session_start();
}*/
error_reporting(E_ALL);
require("connexionBDD.php");
try {
$pdo = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe, array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
} catch (Exception $e) {
echo 'Erreur : ' . $e->getMessage() . '<br />';
echo 'N° : ' . $e->getCode();
}
require('headermysql.php');
/************************************************************************/
if (isset($_SESSION['action'])) {
$_POST['action'] = $_SESSION['action'];
unset($_SESSION['action']);
}
/************************************************************************/
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case "Login":
require('check_user.php');
break;
case "Registration":
require('form_registration.php');
break;
case "Validation":
require('validation_inscription.php');
if (isset($_SESSION['message'])) {
// Redirect
$_SESSION['action'] = "Registration";
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// Success
}
break;
case "Password_forgotten":
echo "<form method='post'>";
echo "Email: <input type='text' name='email' /><br />";
echo "<input type='submit' name='action' value='Renew_password' /><br />";
echo "</form>";
break;
case "Renew_password":
require('renew_password.php');
break;
default:
// Print & delete messages
if (isset($_SESSION['message'])) {
echo $_SESSION['message']."<br />";
unset($_SESSION['message']);
}
break;
}
}
/********************************************************************************************************/
if (isset($_SESSION['user']['user'])) {
// Authorized visitor
include('xxxxxx/afichier-destination.php');
//include('page_authorized_visitor.php');
} else {
// Unauthorized visitor
if($_POST['action'] <> "Registration" && $_POST['action'] <> "Password_forgotten"){
require('login.php');
}
include('page_unauthorized_visitor.php');
}
require('footermysql.php');
et pour security.php
Code : Tout sélectionner
<?php
/*if (session_status() == PHP_SESSION_NONE) {
session_start();
}*/
//if(!isset($_SESSION)) session_start();
error_reporting(E_ALL);
//***********Configuration*****************/
// Login navigation for authorized_visitor
$file_log_navigation = "zzzzzzzz/log_access_authorized_visitor.txt";
// Page for unauthorized_visitor
//$page_no_login = "page_unauthorized_visitor.php";
$page_no_login = "login_failed.php";
/* On all pages only for authorized_visitor:
<?php require('../security.php'); ?>
*/
//*****************************************/
session_start();
/*if(!isset($_SESSION))
{
session_start();
}*/
/*if (session_status() == PHP_SESSION_NONE) {
session_start();
}*/
if (isset($_SESSION['member'])) {
// Navigation log
$register = $date('Y-m-d H:m:s')."\t";
$register .= $_SERVER['REMOTE_ADDR']."\t";
$register .= $_SERVER['HTTP_USER_AGENT']."\t";
$register .= $_SESSION['user']['Rk_members']."\t";
$register .= $_SESSION['user']['first_name']." ";
$register .= $_SESSION['user']['last_name']." (";
$register .= $_SESSION['user']['country'].")\t";
$register .= __FILE__;
file_put_contents($file_log_navigation, $register, FILE_APPEND);
} else {
// No login
header('Location: '.$page_no_login);
exit;
}
session_destroy();
?>
Merci de ton (votre) aide! (j'ai bien relu mon message pour être bien clair)
PS: j'ai aussi une question générale de béotien (sans rapport avec ce qui précède):
la 1ère fois que je teste sur wampserver et sur le web la page de login s'affiche et je peux taper mon ID et PW,
mais pour les essais suivants, la page de login ne s'affiche même pas et sans ID et PW j'ai directement Contents of the home page for authorized visitor ou Contents of the home page for unauthorized visitor, selon les tests ci-dessus
J'ai essayé d'effacer la mémoire avec ccleaner, d'arrêter wamp et de le redémarrer, d'éteindre mon ordi et de l'allumer mais cela ne marche pas.
Ce n'est que quand j'attend plus longtemps (>24 heures???) que je retrouve ma page avec login, mais une seule fois.
A+, Seb