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 :
Et là, on instancie la classe Bdd et pas d'erreur.
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"); } ?>]
Je lance ici la page layout.
layout.php :
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 <?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> ?>
L'action du formulaire est authenticate2.php qui utilise la POO mais problème pour instancier les classes :
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">© 2019-2020</p> </form> </main> ...
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); ?>Comment faire ?Error: Class '_classes\Authent' not found in C:\wamp64\www\eis_oo2\page\authenticate2.php on line 7
Partager