Bonjour,

mon code contient un formulaire html et quand on va sur l'action du formulaire, j'utilise aussi la POO mais il ne trouve pas les classes quand je veux les instancier. Bien qu'étant sûr d'avoir déjà lancé l'autoloader, comme on est dans l'action d'un formulaire, au cas où celui-ci ne soit pas pris en compte, j'ai rajouté un include du fichier de la classe (comme ça marchait pas) mais pas mieux. Comment faire SVP ?

URL appelée : http://localhost/eis_oo2/index.php?page=layout.
On passe par index.php qui lance donc l'autoloader :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$page=$_GET['page'];
//autoloading
include_once 'Autoloader.php';
include_once 'connect\connect_mysql.php';
 
use _classes\Bdd\Bdd;
 
$Bdd = new Bdd();
$Bdd->connect('localhost','support_eis', 'root', '');
 
if (isset($page)) {
    include("page/".$page.".php");
}
 
?>]
Et là, on instancie la classe Bdd et pas d'erreur.
Je lance ici la page layout.

layout.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 	require_once(dirname(__DIR__).'\_includes\html0-topPHP.php'); // INIT + FONCTIONS et autres config en PHP
// -----------------------------------------------------------
// page DEFAUT
// -----------------------------------------------------------
 	// ICI, on peut mettre des traitements PHP,....  SPECIFIQUE A LA PAGE
 
	 require_once(dirname(__DIR__).'/_includes/html1-debut.php'); // contient le DEBUT du code HTML, le contenu de <head> SANS la balise </head> 
 
 	// ICI, on peut mettre des scripts, CSS SPECIFIQUE A LA PAGE (donc AVANT la  balise </head>)
 
 	require_once(dirname(__DIR__).'/_includes/html2-milieu.php'); // contient la balise </head>et le DEBUT du <body>, A PARTIR DE la balise </head> 
 
echo 'layout<br/>';
	require_once(dirname(__DIR__).'/_includes/html3-fin.php'); // contient la FIN du code HTML, jusqu'au </body></html> ?>
Le fichier layout.php contient notamment html2-milieu.php qui contient notamment un formulaire de connexion :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	...
if (!isset($SESA)||empty($SESA)) {
	?>
			<main>
            <form class="form-signin" action="<?php echo SITE_URL_HTTP;?>/page/authenticate2.php" method="post">
      <img class="mb-4" src="<?=  SITE_URL_HTTP.'/image/bootstrap-solid.svg' ?>" alt="" width="72" height="72">
      <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
      <label for="inputEmail" class="sr-only">Email address</label>
      <input type="text" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
      <label for="inputPassword" class="sr-only">Password</label>
      <input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
 
      <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
      <p class="mt-5 mb-3 text-muted">&copy; 2019-2020</p>
    </form>
 
			</main>
...
L'action du formulaire est authenticate2.php qui utilise la POO mais problème pour instancier les classes :
authenticate2.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<?php
echo dirname(dirname(__DIR__))."\\eis_oo2\_classes\Authent\Authent.php"."<br/>";
include_once dirname(dirname(__DIR__))."\\eis_oo2\_classes\Authent\Authent.php";
use _classes\Authent;
use _classes\Bdd;
 
$auth=new Authent();
$Bdd=new Bdd();
$Bdd->connect('localhost','support_eis', 'root', '');
$auth->Authentification($Bdd);
?>
Error: Class '_classes\Authent' not found in C:\wamp64\www\eis_oo2\page\authenticate2.php on line 7
Comment faire ?