Connexion a une base de données avec PHP PDO

Résolu
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu dois remplacer le host par l'adresse du serveur
1
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
mais je ne sais pas comment déterminer l'adresse du serveur?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
c'est dans l'image que tu nous as posté....
0
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux virer ta ligne 56
Et penser a mettre un return dans ta fonction conn()
0
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
d'accord , problème résolu et merci bro.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
mon script j'ai le transféré par ftp dans leur serveur
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
OK. 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
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
Tu 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
LearnDeep Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
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