Connexion a une base de données avec PHP PDO

Résolu/Fermé
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 30 sept. 2019 à 14:50
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 30 sept. 2019 à 23:23
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 sept. 2019 à 22:04
Tu dois remplacer le host par l'adresse du serveur
1
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 22:23
mais je ne sais pas comment déterminer l'adresse du serveur?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 22:37
c'est dans l'image que tu nous as posté....
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 22:49
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 30 sept. 2019 à 23:08
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 lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 23:23
d'accord , problème résolu et merci bro.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 sept. 2019 à 19:17
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 lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 20:32
mon script j'ai le transféré par ftp dans leur serveur
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 20:45
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 lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
Modifié le 30 sept. 2019 à 21:00
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 21:05
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 lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
30 sept. 2019 à 21:07
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