Page 1 sur 1

Aide pour page connexion ( amélioré si possible )

Posté : 04 mai 2021, 01:04
par MarYas
Bonjour à tous je voulais savoir si je peux sécurisé un peu plus en évitant les choses basiques mdp etc mais sur la syntaxe ou le code en lui même chaque conseil est le bienvenu merci car je débute en php c'est la façon POO plus sécurisé à ce qu'il parait ?!
Merci

<?php

  function connexion() {

    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname= "";

    try{
      $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
echo "connexion effectué";
      return $conn;


    } catch(PDOException $e) {
      echo "Connexion échouée: " . $e->getMessage();
        return false;
        exit();
    }
}

?>



Re: Aide pour page connexion ( amélioré si possible )

Posté : 04 mai 2021, 09:14
par Shadowwera
Bonjour !

Si tu souhaite améliorer ton code, et surtout le sécurisé, je t'invite à commencer à programmer en POO ( Class )
En plus de ça, ça va te permettre de n'écrire qu'une seul fois certaine portion de code ( Par exemple ta connexion à ta base de données )

Ce cour sur OpenClassrooms m'a beaucoup aidé à comprendre comment faire tout ceci proprement :
https://openclassrooms.com/fr/courses/4 ... ntee-objet

Re: Aide pour page connexion ( amélioré si possible )

Posté : 04 mai 2021, 17:56
par MarYas
Bin aprés oui tkt pas je suis en modéle mvc ce fichier connexion je fait appel dans un autre avec une classe puis function puis $idcon = connexion() ;
C'est juste sur ce fichier que je demande car c'est bien le modéle POO de w3 school mais je le trouve simpliste après je suis débutant dc je veux vraiment savoir si je peux en suivant l'évolution de php l'utiliser dans mes futurs sites tel quel !
PS : les echo c'est juste pour moi débugger voir si ma connexion se fait merci pour ta réponse quand même !

Re: Aide pour page connexion ( amélioré si possible )

Posté : 05 mai 2021, 11:38
par Shadowwera
Dans ces cas la pourquoi ne pas utiliser un Class pour ta connexion ?
class BDD {
	PRIVATE PDO $dbh;
	private string $host = "localhost";
	private string $dbname = "";
	private string $username = "root";
	private string $password = "root";
	public function __construct(){
		try {
			$this->dbh = new PDO("mysql:host=$this->host;dbname=$this->dbname", $this->username, $this->password);
			$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		} catch(PDOException $e) {
			die('Connexion failed : '.$e->getMessage());
		}
	}
	public function getConnection(){
		return $this->dbh;
	}
}
et en faisant un appel comme celui-ci :
$BDD = new BDD();
$dbh = $BDD->getConnection();
sans oublier de require ta Class évidemment

Sans compter la facilité à faire tes connexions, ça ajoutera une sécurité supplémentaire grâce au PRIVATE

Re: Aide pour page connexion ( amélioré si possible )

Posté : 19 mai 2021, 17:15
par MarYas
Merci pour ta réponse mais j'ai un message d'erreur
Parse error: syntax error, unexpected 'PDO' (T_STRING), expecting variable (T_VARIABLE) ligne 5 (PRIVATE PDO $dbh;)
Dans mon autre fichier je fait plutot appel comme ça $dbh = BDD::getConnexion()
Vu que je suis en static function.
Je cherche l'erreur en attendant ;)
Et quand je le change il me mets erreur "Parse error: syntax error, unexpected 'string' " ligne 6 (private string $host = "localhost";)

Re: Aide pour page connexion ( amélioré si possible )

Posté : 22 mai 2021, 11:36
par Bryx
Hello 🖐

Je te déconseille fortement d'en faire une classe statique.
De plus, la réponse de Shadowwera est intéressante et complète là avec Composer pour éviter les requires d'une classe.

Voici une video avec l'utilisation de Composer :
- https://grafikart.fr/tutoriels/composer-480

J'ai aussi trouvé une question similaire ton souci, regarde le sujet :
- php-debutant/topic281523.html

Dis-moi si Composer t'aidera grandement et savoir si ton problème de classe statique a été résolvez.

Merci ;)

Re: Aide pour page connexion ( amélioré si possible )

Posté : 22 juin 2021, 23:27
par MarYas
Bin j'ai fait ça oui je me doute qu'a voir c'est mieux dans une class static ou objet. Vous en pensez quoi ?
namespace ConnexControl;

use \PDO ;

class BDD
{

  private  $dbh;
  private  $host ;
  private  $dbname ;
  private  $username ;
  private  $password ;

  public function __construct($dbname, $host = "localhost",  $username = "root", $password = "root"){

      $this->dbname = $dbname;
      $this->host = $host;
      $this->username = $username;
      $this->password = $password;
  }

  public function getPDO(){
    try
    {
      $dbh = new PDO("mysql:dbname=$this->dbname;host=$this->host; charset=utf8", $this->username, $this->password);
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $this->dbh = $dbh;
    }
    catch (PDOException $e)
    {
      $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
      die($msg);
    }
    return $this->dbh;
  } // fin getPDO