2 erreurs

Zakarya93 Messages postés 1026 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai ces deux erreurs :

-Warning: require(config/database.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100

-Fatal error: require(): Failed opening required 'config/database.php' (include_path='.;C:\php\pear') in C:\wamp\www\rs\pages\register.php on line 100
Call Stack

Mon register.php :

<h1>Inscription</h1>

<?php	  
if (!isset($_POST['submit']))
{
?>

<form method="POST" action="">

   <label for='sexe'>Sexe</label>
   <select name="sexe">
           <?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':""; ?>
           <?php echo $sexe != 'Homme' ?'<option value="Homme">Homme</option>':""; ?>
           <?php echo $sexe != 'Femme' ?'<option value="Femme">Femme</option>':""; ?>          
 </select><br /><br/>
 
 <label for="pseudo">Votre pseudo : </label>
 <input type="text" name ="pseudo" value='<?php echo isset($pseudo) ? $pseudo :""; ?>'><br />
 
 <label for="password">Votre password : </label>
 <input type="password" name ="password"><br />
 
 <label for="repeatpassword">Repetez votre password : </label>
 <input type="password" name ="repeatpassword"><br />
 
 <label for="email">Veuillez saisir votre email : </label>
 <input type="text" name ="email" value='<?php echo isset($email) ? $email :""; ?>'><br />
 
 <label for="apropos">A propos de vous </label>
 <textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos) ? $apropos : ""; ?></textarea><br /><br />
 
 <input type="submit" value="S'inscrire" name="submit">
 
</form>

<?php

}
else
{
              
		$sexe = htmlspecialchars(strip_tags($_POST['sexe']));
        $pseudo = htmlspecialchars(strip_tags($_POST['pseudo']));
        $password = htmlspecialchars(strip_tags($_POST['password']));
        $repeatpassword = htmlspecialchars(strip_tags($_POST['repeatpassword']));
        $email = htmlspecialchars(strip_tags($_POST['email']));
        $apropos = htmlspecialchars(strip_tags($_POST['apropos']));       
    
    
    if(empty($pseudo))
       {
      $errors[] ="Veuillez saisir un pseudo";
    }
    
    if (empty($password))
    {
      $errors[] ="Veuillez saisir un password";
    }
    
    if($password != $repeatpassword)
    {
     $errors[] = "Vos deux password doivent être identiques";
    }
    
    if(!filter_var($email,FILTER_VALIDATE_EMAIL))
    {
     $errors[] = "Votre adresse email n'est pas correcte";     
    }
    
    if(empty($apropos))
    {
     $errors[] = "Veuillez vous décrire en quelques lignes"; 	 
    }
	
	if(pseudo_existe($email) == 1)
	{
	 $errors[] = "Ce pseudo n'est pas disponible";
    }
	
	if(email_existe($email) == 1)
	{
	 $errors[] = "Cette adresse email existe déjà <br> avez vous oublié votre <a href='#'>password? </a>";
	}
	
    if(!empty($errors))
    {
     foreach($errors as $error)
     {
      echo "<div class='error'>".$error."</div>";
     }
      } 
	   inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
                        die('Inscription terminée, vous pouvez vous <a href=\'index.php?page=login\'>connecter</a>');
}
?>


<?php

require('config/database.php');
require('includes/functions.php');

 
 //si le formulaire a été soumis
 if(isset($_POST['register'])) {

  // si tous les champs sont remplis
  if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])) {

   $errors = []; //tableau contenant l'ensemble des erreurs

   extract($_POST);

  

   //si le pseudo est deja dans la bdd
   if(is_already_in_use('pseudo', $pseudo, 'users')) {
    $errors[] = "Le pseudonyme est déja utilisé.";
   }

   //si l'adresse mail est deja dans la bdd
   if(is_already_in_use('email', $email, 'users')) {
    $errors[] = "L'adresse e-mail est déja utilisée.";
   }


   //si il y a 0 erreur
   if(count($errors) == 0) {

    
        //enregistrement du membre dans la base de donnée
        $q = $db->prepare('INSERT INTO users(name, pseudo, email, password)
                  VALUES(:name, :pseudo, :email, :password)');
        $q->execute([

         'name' => $name,
         'pseudo' => $pseudo,
         'email' => $email,
         'password' => ($password)

        ]);

        redirect('index.php');

   } else {
    save_input_data();
   }

  } else {

   //si tous les champs ne sont pas remplis
   $errors[] = "Veuillez remplir s'il vous plaît tous les champs";
   save_input_data();


  }

 } else {
  clear_input_data();
 }


?>


<?php require('views/register.views.php'); ?>


Mon functions.php :

<?php
try 
{
  $bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
}
catch(Exception $e) 
{
  die('Erreur : '.$e->getMessage());
}

function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos)
{
  Global $bdd;
  
  $password=sha1($password);
  $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos)
          VALUES (:pseudo,:password,:email,:sexe,:apropos)";
  $result = $bdd->prepare($sql);
  $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR);
  $result->bindValue('password', $password, PDO::PARAM_STR);
  $result->bindValue('email', $email, PDO::PARAM_STR);
  $result->bindValue('sexe', $sexe, PDO::PARAM_STR);
  $result->bindValue('apropos', $apropos, PDO::PARAM_STR);
  $result->execute();
}



//vérifie que les données ne sont pas en double dans la base de données
if(!function_exists('is_already_in_use')) {
 function is_already_in_use($field, $value, $table) {
  global $db;

  $q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
  $q->execute([$value]);

  $count = $q->rowCount();

  $q->closeCursor();

  return $count;
 }
}
 


Que faire ? Merci d'avance.

2 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Simplement, tu as mis un chemin relatif et ça part pas du bon endroit, essayes d'ajouter des "../" devant le chemin et de voir (cela permet de remonter au dossier parent).
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Pour lequel ? require('config/database.php'); ou require('includes/functions.php'); ? ou require('views/register.views.php') ?
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Le require qui te pose pb, je pense que si un de tes 3 require échoue, les autres aussi échoueront (mais comme l'interpréteur s'arrête à la première erreur ..)
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Meme problème :( Warning: require(../config/database.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100 et pour l'autre aussi
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Autre solution ? :)
      0
    5. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      C:\wamp\www\rs\pages\register.php
      ../config/database.php
      Donc ton database.php serait dans :
      C:\wamp\www\rs\config\database.php
      ?
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    dans mon www y a pas de dossier "config


    Il faut que tu comprennes à quoi servent les lignes de code que tu copie/colle bêtement.....
    Commence par lire ceci :
    https://www.php.net/manual/fr/function.require.php

    Ensuite,
     require("config/database.php")

    Indique que le fichier database.php ... qui se trouve dans le dossier config est NECESSAIRE !
    Si tu n'as pas de dossier config ... tu changes le chemin par TON dossier ... celui qui contient TON fichier de connexion à ta BDD ( peu importe son nom ! )

    Si tu as un fichier de connexion à ta BDD qui s'appelle par exemple : connexionBDD.php ... et qu'il se trouve dans le même dossier que ta page "pages\register.php" .. ... tu remplaces donc la ligne de code par :
     require("./connexionBDD.php")

    Si par contre ce fichier se trouve dans ton répertoire RS ... tu peux écrire :
     require("../connexionBDD.php")


    Avant de poursuivre le développement de ton site web .. je t'invite fortement à te documenter sur ce que sont les LIENS RELATIFS et à leur fonctionnement....
    Tu peux aussi t'intéresser à l'instruction php : __DIR__

    0
    1. Zakarya93
       
      j'ai mis "require('../functions.php');" mais j'ai Warning: require(../functions.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93
         
        Ton fichier "functions.php" ... il se trouve où dans ton arboréscence ??
        0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      dans mon dossier functions, je l'ai renommé "register.functions.php" et j'ai mis aussi connect.php dans le dossier
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
         
        Et tu l'appelles depuis quelle page ?
        Index.php ... ou register.php?
        (register.php est appellé directement ou est un INCLUDE dans ta page index ?? )

        As tu essayé de simplement faire :
        require_once('functions/register.functions.php');
        


        Au cas où ça ne fonctionnerait toujours pas;
        merci d'ajouter ce code dans ta page et de nous en dire le résultat :
        echo " FILE : " . __FILE__ ;
        echo " DIR : " . __DIR__;
        echo "php_self :".$_SERVER["PHP_SELF"];
        
        0