Connexion a une base de données avec PHP PDO

Résolu
Bonjour , j'ai fonctionner mon application sur serveur local et tout marche bien mais quand j'ai éssayé de la fonctionné a un serveur réel , la connexion a la base n'éxiste pas

voici mon fichier.php
<?php

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true ");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: X-Custom-Header, Origin, Content-Type , Authorisation , X-Requested-With");
header("Content-Type: application/json; charset=UTF-8 ");


$json = file_get_contents('php://input');
$decoded = json_decode($json);

$email = htmlspecialchars($decoded->email, ENT_QUOTES);
$pass = htmlspecialchars($decoded->password, ENT_QUOTES);

function conn ()
{
	$dbhost="localhost";
	$user='smartlibffsmart';
	$pass='smartlibffsmart';
	$db='smart';

	$conn = new PDO('mysql:host=smartlibffsmart.mysql.db;dbname=smartlibffsmart', $user, $pass);
	return $conn;
}

function encrypt_decrypt($action, $string)
{
	$output = false;
	$encrypt_method = "AES-256-CBC";
	$secret_key = 'WS-SERVICE-KEY';
	$secret_iv = 'WS-SERVICE-VALUE';
	$key = hash('sha256', $secret_key);
	$iv = substr(hash('sha256', $secret_iv), 0, 16);
	if ($action == 'encrypt') {
		$output = base64_encode(openssl_encrypt($string, $encrypt_method, $key, 0, $iv));
	} else {
		if ($action == 'decrypt') {
			$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
		}
	}
	return $output;
}

if (empty($email) || empty($pass) || mb_strlen($pass) < 6 || mb_strlen($pass) > 30 ){
json_encode(false);
	die;
}else{

$db = conn();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$password = encrypt_decrypt('encrypt',$pass);

$res = $db->prepare("SELECT * FROM user WHERE email = ? and password = ? ");
$res->execute([$email,$password]);
$values = $res->fetchAll();

echo json_encode(sizeof($values) > 0 ? true : false);
}

?>


informations sur la base

2 réponses

  1. Modérateur
    Tu dois remplacer le host par l'adresse du serveur
    1
    1. mais je ne sais pas comment déterminer l'adresse du serveur?
      0
    2. Modérateur
      @LearnDeepc'est dans l'image que tu nous as posté....
      0
    3. erreur : <br />
      <b>Fatal error</b>: Call to a member function setAttribute() on a non-object in <b>/home/smartlibff/www/SmartLibrary/api/logins.php</b> on line <b>59</b><br /
      0
    4. Modérateur
      Tu peux virer ta ligne 56
      Et penser a mettre un return dans ta fonction conn()
      0
    5. d'accord , problème résolu et merci bro.
      0
  2. Modérateur
    Bonjour,

    Commence par ça :
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Et dis nous le message d'erreur qui t'est renvoyé....

    A savoir que la plus part des hébergeurs n'autorisent pas une connexion distante. Donc ton script PHP doit se trouver sur leur serveur et non en local sur ton ordi....

    0
    1. mon script j'ai le transféré par ftp dans leur serveur
      0
    2. Modérateur
      @LearnDeepOK. il est bien sur le serveur.
      Et pour ce qui est de l'activation des erreurs PDO tel qu'écrit dans le lien que je t'ai donné ? ça donne quoi ?
      Quel message d'erreur ?
      0
    3. elle n'a donné rien , le réponse est vide
      voici le lien du sitehttp://smartlibrairie.com/#!/dashboard
      dans la page connecter tu peux voir l'erreur dans le navigateur aprés la soumission du formulaire
      le nom du domaine : www.smartlibrairie.com
      0
    4. Modérateur
      @LearnDeepTu as une erreur 500....
      mais... as tu modifié le script en tenant compte de ce qui écrit dans le lien que je t'ai donné ?
      Si oui.. montres nous ce que tu as modifié....

      Vérifies également que ton fichier est bien encodé en utf8 sans BOM (voir chapitre un de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )

      Je précise également que l'instruction htmlspecialchars n'est à utiliser QUE pour l'affichage .. et en aucun cas pour la "récupération" des variables...
      Je t'invite donc à lire et à appliquer le contenu de ce lien également :
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

      Pour finir, pour déterminer où se situe ton erreur ( une fois que tu auras mis en pratique TOUS les conseils donnés dans mes liens... et si le souci persiste.... ) , tu devras mettre en commentaire tout ton code puis réactiver ligne par ligne (en testant à chaque fois ) jusqu'à tant que tu trouves la (ou les ) ligne(s) qui pose(nt) problème.
      0
    5. voici l'appel du script dans la partie cliente angular 8 :

      .........
       let newUser = new User(email, password, nomcomplet, occupation, '');
          console.log(newUser);
          this.httpSubscription = this.http.post("http://www.smartlibrairie.com/SmartLibrary/api/logins.php", JSON.stringify(newUser)).subscribe(res => {
            console.log(res);
            if (res === true) { ...............
      


      capture ecran :



      s'il te plait dis moi si j'appelle incorrecteent les fichiers serveur ou peut etre j'appelle incorrectement le host dans le serveur
      0