Connexion serveur distant impossible
Résolu
papyclic
Messages postés
451
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour
Je cré une nouvelle discussion suite à un soucis très complexe.
J'ai créé une class pour ma connexion, en local aucun problème pour me connecter les SESSION sont bien créé je suis bien redirigé sur mon compte tout va bien.
Mais le problème sur mon serveur à distant ma connexion est impossible.
une des condition de ma class m'empêche de me connecter, Méthode Banni()
Si je supprime cette condition la connexion se fait bien mais c'est ma foncion Session() ne joue pas son rôle
J'ai fait un print_r en local
j'ai fait un print_r à distant
ma class
J'espère que mes explications sont assez clair pour que vous puissiez comprendre mon soucis et m'aider.
Merci encore.
Je cré une nouvelle discussion suite à un soucis très complexe.
J'ai créé une class pour ma connexion, en local aucun problème pour me connecter les SESSION sont bien créé je suis bien redirigé sur mon compte tout va bien.
Mais le problème sur mon serveur à distant ma connexion est impossible.
une des condition de ma class m'empêche de me connecter, Méthode Banni()
Si je supprime cette condition la connexion se fait bien mais c'est ma foncion Session() ne joue pas son rôle
J'ai fait un print_r en local
Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => 0 [membre] => 1 [sortie] => 1 [cours] => 1 [calendrier] => 1
j'ai fait un print_r à distant
Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => [membre] => [sortie] => [cours] => [calendrier] =>
ma class
class Connexion_class {
private $pseudo;
private $password;
private $actif;
private $bdd;
public function __construct($pseudo, $password, $actif) {
$password = Security::hash($password);
$this->pseudo = $pseudo;
$this->password = $password;
$this->actif = $actif;
$this->bdd = bdd();
}
private function ChampsVide() {
return(empty($this->pseudo) || empty($this->password)) ? true : false;
}
private function PseudoExist() {
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
AND actif = 1";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo));
$result = $requete->fetch();
return ($result) ? $result['password'] : false;
}
private function Banni() {
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
AND actif = 1";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo));
$result = $requete->fetch();
return($result['actif'] == 0) ? true : false;
}
private function Session() {
$sql = "SELECT *
FROM tb_gestion_admin
INNER JOIN tb_adherent
ON tb_adherent.id_adherent = tb_gestion_admin.rid_adherent
WHERE pseudo = :pseudo
AND actif = 1";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo));
$result = $requete->fetch();
$_SESSION['id_adherent'] = $result['id_adherent'];
$_SESSION['prenom'] = $result['prenom'];
$_SESSION['pseudo'] = $this->pseudo;
$_SESSION['aucune_gestion'] = $result['aucune_gestion'];
$_SESSION['membre'] = $result['membre'];
$_SESSION['sortie'] = $result['sortie'];
$_SESSION['cours'] = $result['cours'];
$_SESSION['calendrier'] = $result['calendrier'];
}
public function VerifConnexion() {
if($this->ChampsVide()) {
$erreur = 'Veuillez remplir tous les champs';
} else if($this->PseudoExist()) {
if($this->password == $this->PseudoExist()) {
if(!$this->Banni()) {
$erreur = 'success';
$this->Session();
} else {
$erreur = "Ton compte a été supprimé";
}
} else {
$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
}
} else {
$erreur = "Ce compte n'existe pas";
}
return $erreur;
}
}
J'espère que mes explications sont assez clair pour que vous puissiez comprendre mon soucis et m'aider.
Merci encore.
A voir également:
- Connexion serveur distant impossible
- Gmail connexion - Guide
- Changer serveur dns - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
- Instagram connexion impossible erreur inattendue ✓ - Forum Instagram
35 réponses
par contre en local
Array ( ) ? okArray ( [actif] => 1 ) Fatal error: Call to undefined method Connexion_class::Session() in C:\Users\Gilbert\Dropbox\wamp\www\cliquedecruet\classes\Connexion_class.php on line 64
Voici tes fichiers modifiés.
Peux tu les tester ?
La class de connexion
Cordialement,
Jordane
Peux tu les tester ?
<?php
//Démarrage de la session.. si pas déjà démarrée
if(session_id() == '') {
session_start();
}
if(isset($_POST['pseudo']) && isset($_POST['password'])) {
$pseudo = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
$password = isset($_POST['password']) ? Security::clean($_POST['password']) : '';
$actif = isset($_POST['actif']) ? $_POST['actif'] : '';
$connexion = new Connexion_class($pseudo, $password, $actif);
$verif = $connexion->VerifConnexion();
//------------------------------------------------------------------------
// Le temps des tests
//------------------------------------------------------------------------
echo " <pre><br>verif =<br>";
print_r($verif );
echo " </pre>";
//------------------------------------------------------------------------
if($verif['error'] == 'success') {
$_SESSION['id_adherent'] = $verif['session']['id_adherent'];
$_SESSION['prenom'] = $verif['session']['prenom'];
$_SESSION['pseudo'] = $pseudo;
$_SESSION['aucune_gestion'] = $verif['session']['aucune_gestion'];
$_SESSION['membre'] = $verif['session']['membre'];
$_SESSION['sortie'] = $verif['session']['sortie'];
$_SESSION['cours'] = $verif['session']['cours'];
$_SESSION['calendrier'] = $verif['session']['calendrier'];
$_SESSION['loginTime'] = date('Y-m-d H:i:s'); // démarrage de la connexion
//redir("./index.php?body=compte_profil&type=compte");
//------------------------------------------------------------------------
// Le temps des tests
//------------------------------------------------------------------------
echo " <pre><br>SESSION =<br>";
print_r($_SESSION );
echo " </pre>";
//------------------------------------------------------------------------
} else {
$erreur[] = $verif['error'];
}
}
if (isset($erreur)) {
echo output_errors($erreur);
}
?>
La class de connexion
<?php
class Connexion_class {
private $pseudo
,$password
,$actif
,$bdd;
public function __construct($pseudo, $password, $actif) {
$password = Security::hash($password);
$this->pseudo = $pseudo;
$this->password = $password;
$this->actif = $actif;
$this->bdd = bdd();
}
public function VerifConnexion() {
$result=array();
$user = $this->UserExist();
if($this->ChampsVide()) {
$result['error'] = 'Veuillez remplir tous les champs';
}elseif($user){ //On vérifie que l'utilisateur exist
if($user['actif']==0){ // on verifie que l'utilisateur n'est pas banni
$this->actif = $user['actif'];
$result['error'] = 'success';
$result['session'] = $user;
}else{
$result['error'] = "Ton compte a été vérrouillé";
$result['session'] = NULL;
}
}else {
$result['error'] = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
$result['session'] = NULL;
}
return $result;
}
/**
* Retourne les infos d'un USER
* en fonction de son pseudo et de son password
* @return : Array
*/
private function UserExist() {
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
AND password = :password";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
$result = $requete->fetch();
return $result;
}
/**
* teste si les champs sont vides
*/
private function ChampsVide() {
return(empty($this->pseudo) || empty($this->password)) ? true : false;
}
//----------------- FIN DE LA CLASS ------------------------//
}
?>
Cordialement,
Jordane
voici l'erreur renvoyé
Parse error: syntax error, unexpected T_STRING in /home/cliquede/www/classes/Connexion_class.php on line 3
le résultat
verif =
Array
(
[error] => success
[session] => Array
(
[id_adherent] => 5
[nom] =>
[prenom] => Gilbert
[email] =>
[naissance] => 0000-00-00
[fixe] =>
[mobile] =>
[adresse] =>
[lieu_dit] =>
[code_postal] =>
[ville] =>
[pseudo] => gilbertchia
[password] => 4dde8e5a24323b82424bb05d34e24aa42cc31357
[actif] =>
[debut] => 1989
[fin] => 2001
)
)
SESSION =
Array
(
[id_adherent] => 5
[prenom] => Gilbert
[pseudo] => gilbertchia
[aucune_gestion] =>
[membre] =>
[sortie] =>
[cours] =>
[calendrier] =>
[loginTime] => 2015-03-04 19:30:03
)
ok... et tu es sûr que dans ta BDD (celle du serveur) .. le User dont l' ID est 5 a bien exactement les mêmes infos que dans ta BDD Locale ??
Car le SELECT * ne retourne pas grand chose comme tu peux le voir ....
et là .. ça ne vient pas du code ... c'est sûr !
Car le SELECT * ne retourne pas grand chose comme tu peux le voir ....
[id_adherent] => 5
[nom] =>
[prenom] => Gilbert
[email] =>
[naissance] => 0000-00-00
[fixe] =>
[mobile] =>
[adresse] =>
[lieu_dit] =>
[code_postal] =>
[ville] =>
[pseudo] => gilbertchia
[password] => 4dde8e5a24323b82424bb05d34e24aa42cc31357
[actif] =>
[debut] => 1989
[fin] => 2001
et là .. ça ne vient pas du code ... c'est sûr !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
donc là j'ai décommenter la redirection et la connexion c'est bien faites
mais par contre il y a 2 membre avec le même pseudo l'un avec actif à 0 et l'autre actif à 1
et c'est le membre actif à 0 qui se connecte, ça devrait être le contraire en fait.
Ce que je trouve curieux c'est qu'il n'y a pas de session pour
mais par contre il y a 2 membre avec le même pseudo l'un avec actif à 0 et l'autre actif à 1
et c'est le membre actif à 0 qui se connecte, ça devrait être le contraire en fait.
Ce que je trouve curieux c'est qu'il n'y a pas de session pour
$_SESSION['aucune_gestion'] = $verif['session']['aucune_gestion'];
$_SESSION['membre'] = $verif['session']['membre'];
$_SESSION['sortie'] = $verif['session']['sortie'];
$_SESSION['cours'] = $verif['session']['cours'];
$_SESSION['calendrier'] = $verif['session']['calendrier'];
ça y a rien à voir je crois car l'un est un membre actif à 0
l'autre membre actif à 1
dans les conditions pour la connexion ça regarde dans la BDD uniquement les membre actif
mais ce que je ne trouve pas normal c'est que la session n'existe pas
de toute manière je suis un peu perdu je ne sais plus ou j'en suis avec tout ça j'en pert la tête
Crois tu que c'est possible que la configuration de PHP en local et sur mon serveur est une influence à propos des fonctions de ma class?
Parce que je viens de réessayé proprement est en local ça fonctionne très bien
Merci vraiment du temps que tu y passe mais j'y sans mal ....
l'autre membre actif à 1
dans les conditions pour la connexion ça regarde dans la BDD uniquement les membre actif
mais ce que je ne trouve pas normal c'est que la session n'existe pas
$_SESSION['aucune_gestion'] = $verif['session']['aucune_gestion'];
$_SESSION['membre'] = $verif['session']['membre'];
$_SESSION['sortie'] = $verif['session']['sortie'];
$_SESSION['cours'] = $verif['session']['cours'];
$_SESSION['calendrier'] = $verif['session']['calendrier'];
de toute manière je suis un peu perdu je ne sais plus ou j'en suis avec tout ça j'en pert la tête
Crois tu que c'est possible que la configuration de PHP en local et sur mon serveur est une influence à propos des fonctions de ma class?
Parce que je viens de réessayé proprement est en local ça fonctionne très bien
Merci vraiment du temps que tu y passe mais j'y sans mal ....
voilà
alors pourquoi actif est vide alors que dans la BDD il est à 1
pourquoi ses variable sont vide alors que dans la BDD elles sont à 0 ou 1
verif =
Array
(
[error] => success
[session] => Array
(
[id_adherent] => 6
[nom] => TONIN
[prenom] => Nadège
[email] =>
[naissance] => 0000-00-00
[fixe] =>
[mobile] =>
[adresse] =>
[lieu_dit] =>
[code_postal] =>
[ville] =>
[pseudo] => nadegetoni
[password] => 1137ed60ff09cc2d9e4babef70a9bb8a5339557f
[actif] =>
[debut] => 1989
[fin] => 2001
)
)
SESSION =
Array
(
[loginTime] => 2015-03-04 21:10:08
[id_adherent] => 6
[prenom] => Nadège
[pseudo] => nadegetoni
[aucune_gestion] =>
[membre] =>
[sortie] =>
[cours] =>
[calendrier] =>
)
alors pourquoi actif est vide alors que dans la BDD il est à 1
pourquoi ses variable sont vide alors que dans la BDD elles sont à 0 ou 1
[aucune_gestion] =>
[membre] =>
[sortie] =>
[cours] =>
[calendrier] =>
Dans ta table .... ACTIF il vaut 1 si actif et 0 si banni ?
Dans ce cas... il faut inverser dans le code que je t'ai donné.
Voici corrigé.
Par contre.. comme il semble qu'il y ai quand même des données venant de la requête.. je pense que tu as d'autres "copies" de ton user.
Testes le code suivant... on va le voir direct !
Dans ce cas... il faut inverser dans le code que je t'ai donné.
Voici corrigé.
Par contre.. comme il semble qu'il y ai quand même des données venant de la requête.. je pense que tu as d'autres "copies" de ton user.
Testes le code suivant... on va le voir direct !
<?php
class Connexion_class {
private $pseudo
,$password
,$actif
,$bdd;
public function __construct($pseudo, $password, $actif) {
$password = Security::hash($password);
$this->pseudo = $pseudo;
$this->password = $password;
$this->actif = $actif;
$this->bdd = bdd();
}
public function VerifConnexion() {
$result=array();
$user = $this->UserExist();
if($this->ChampsVide()) {
$result['error'] = 'Veuillez remplir tous les champs';
}elseif($user){ //On vérifie que l'utilisateur exist
if($user['actif']==1){ // on verifie que l'utilisateur n'est pas banni
$this->actif = $user['actif'];
$result['error'] = 'success';
$result['session'] = $user;
}else{
$result['error'] = "Ton compte a été vérrouillé";
$result['session'] = NULL;
}
}else {
$result['error'] = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
$result['session'] = NULL;
}
return $result;
}
public function checkUserByPseudo(){
$result=array();
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo));
$result['NB_RESULT'] = "il y a ".$requete->rowCount(). " resultats pour le user :".$this->pseudo;
$result['RESULTAT'] = $requete->fetchAll();
return $result;
}
}
/**
* Retourne les infos d'un USER
* en fonction de son pseudo et de son password
* @return : Array
*/
private function UserExist() {
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
AND password = :password";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
$result = $requete->fetch();
return $result;
}
/**
* teste si les champs sont vides
*/
private function ChampsVide() {
return(empty($this->pseudo) || empty($this->password)) ? true : false;
}
//----------------- FIN DE LA CLASS ------------------------//
}
?>
<?php
//Démarrage de la session.. si pas déjà démarrée
if(session_id() == '') {
session_start();
}
if(isset($_POST['pseudo']) && isset($_POST['password'])) {
$pseudo = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
$password = isset($_POST['password']) ? Security::clean($_POST['password']) : '';
$actif = isset($_POST['actif']) ? $_POST['actif'] : '';
$connexion = new Connexion_class($pseudo, $password, $actif);
$verif = $connexion->VerifConnexion();
//------------------------------------------------------------------------
// Le temps des tests
//------------------------------------------------------------------------
echo " <pre><br>verif =<br>";
print_r($verif );
echo " </pre>";
$verif2 = $connexion->checkUserByPseudo();
echo " <pre><br>verif2 (combien de user avec le meme pseudo ??) =<br>";
print_r($verif2);
echo " </pre>";
//------------------------------------------------------------------------
if($verif['error'] == 'success') {
$_SESSION['id_adherent'] = $verif['session']['id_adherent'];
$_SESSION['prenom'] = $verif['session']['prenom'];
$_SESSION['pseudo'] = $pseudo;
$_SESSION['aucune_gestion'] = $verif['session']['aucune_gestion'];
$_SESSION['membre'] = $verif['session']['membre'];
$_SESSION['sortie'] = $verif['session']['sortie'];
$_SESSION['cours'] = $verif['session']['cours'];
$_SESSION['calendrier'] = $verif['session']['calendrier'];
$_SESSION['loginTime'] = date('Y-m-d H:i:s'); // démarrage de la connexion
//redir("./index.php?body=compte_profil&type=compte");
//------------------------------------------------------------------------
// Le temps des tests
//------------------------------------------------------------------------
echo " <pre><br>SESSION =<br>";
print_r($_SESSION );
echo " </pre>";
//------------------------------------------------------------------------
} else {
$erreur[] = $verif['error'];
}
}
if (isset($erreur)) {
echo output_errors($erreur);
}
?>
j'ai cette petite erreur
Parse error: syntax error, unexpected T_PRIVATE in /home/cliquede/www/classes/Connexion_class.php on line 151
non mais en fait j'ai des lignes commenté avant
sinon c'est là ou il y a l'erreur
sinon c'est là ou il y a l'erreur
private function UserExist() {
$sql = "SELECT *
FROM tb_adherent
WHERE pseudo = :pseudo
AND password = :password";
$requete = $this->bdd->prepare($sql);
$requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
$result = $requete->fetch();
return $result;
}
verif =
Array
(
[error] => Ton compte a été vérrouillé
[session] =>
)
verif2 (combien de user avec le meme pseudo ??) =
Array
(
[NB_RESULT] => il y a 1 resultats pour le user :franckchia
[RESULTAT] => Array
(
[0] => Array
(
[id_adherent] => 4
[nom] =>
[prenom] => Franck
[email] =>
[naissance] => 2012-07-17
[fixe] =>
[mobile] =>
[adresse] =>
[lieu_dit] =>
[code_postal] =>
[ville] =>
[pseudo] => franckchia
[password] => 817b40653709ad951833e483d0add3de1be0a4f6
[actif] =>
[debut] => 1989
[fin] =>
)
)
)
CREATE TABLE IF NOT EXISTS `tb_adherent` ( `id_adherent` int(11) NOT NULL AUTO_INCREMENT, `nom` varchar(45) DEFAULT NULL, `prenom` varchar(45) DEFAULT NULL, `email` varchar(45) DEFAULT NULL, `naissance` date NOT NULL, `fixe` varchar(45) DEFAULT NULL, `mobile` varchar(45) DEFAULT NULL, `adresse` varchar(45) DEFAULT NULL, `lieu_dit` varchar(45) DEFAULT NULL, `code_postal` varchar(5) DEFAULT NULL, `ville` varchar(45) DEFAULT NULL, `pseudo` varchar(45) DEFAULT NULL, `password` varchar(45) DEFAULT NULL, `actif` bit(1) NOT NULL, `debut` varchar(4) NOT NULL, `fin` varchar(4) NOT NULL, PRIMARY KEY (`id_adherent`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=181 ;
regarde si je te donne l'entréé de cet adherent l'actif est bien à 1
(4, '', 'Franck', '', '2012-07-17', '', '', '', '', '', '', 'franckchia', '817b40653709ad951833e483d0add3de1be0a4f6', b'1', '1989', ''),
Bonjour
Tu as raison voilà le problème ça aurai bien été la dernière chose que j'aurai pensé, tout fonctionne pour le mieux, après une longue journée que je t'ai sollicité je te remercie du fond du coeur.
Modifier le type de champ peux à priori foutre le grand bazard, je m'en souviendrais.
En tout cas encore un très grand merci.
Tu as raison voilà le problème ça aurai bien été la dernière chose que j'aurai pensé, tout fonctionne pour le mieux, après une longue journée que je t'ai sollicité je te remercie du fond du coeur.
Modifier le type de champ peux à priori foutre le grand bazard, je m'en souviendrais.
En tout cas encore un très grand merci.
Modifier le type de champ peux à priori foutre le grand bazard, je m'en souviendrais.
Ca oui... je confirme.
Le choix du Type est important ..et le modifier peut avoir des conséquences si on n'en connait pas le fonctionnement...
Cela aura tout de même permis de repasser sur ton code et d'y apporter quelques améliorations/simplifications.(et de sortir, de la class) les variables de session ( car j'insiste... on évite ! )
Bonne continuation.