problème session entre 2 serveurs différent
Posté : 20 sept. 2008, 13:00
Bonjour,
Je rencontre un problème assez bizarre entre mon hébergeur mutualisé et wamp en local.
Le problème est au niveau des sessions sur mon hébergement mutualisé.
Voici ce que donne un print_r en local de $_SESSION :
Array ( [membre] => 1 [pseudo] => supercanard [pwd] => coincoin [admin] => 1 )
Et voici ce que ça donne sur mon hébergement mutualisé :
Array ( [membre] => Array ( [1] => Array ( [id] => 1 [pseudo] => supercanard [motDePasse] => coincoin [admin] => 0 ) ) [pseudo] => supercanard [pwd] => coincoin [admin] => 0 )
Alors évidement lorsque je veut utiliser ces variables de session dans des requêtes, dans le deuxième cas c'est la pagaille car il essayer d'insérer des array au lieu du contenu de la variable de sessions.
Voici le code qui rempli la session :
Je viens de découvrir une piste. En local les register global sont à off alors que sur mon hébergement mutualisé elles sont activées. Celà dit je ne vois pas le rapport
Pour vous donner une idée du problème voici une requête qui pose problème sur mon hébergement mutualisé ( avec les register on donc ) :
SELECT id_membre FROM membre WHERE id_membre = Array AND pwd = 'coincoin'Unknown column 'Array' in 'where clause'
Je ne comprend pas pourquoi il considère $membre comme un tableau et pas $pwd...
Je rencontre un problème assez bizarre entre mon hébergeur mutualisé et wamp en local.
Le problème est au niveau des sessions sur mon hébergement mutualisé.
Voici ce que donne un print_r en local de $_SESSION :
Array ( [membre] => 1 [pseudo] => supercanard [pwd] => coincoin [admin] => 1 )
Et voici ce que ça donne sur mon hébergement mutualisé :
Array ( [membre] => Array ( [1] => Array ( [id] => 1 [pseudo] => supercanard [motDePasse] => coincoin [admin] => 0 ) ) [pseudo] => supercanard [pwd] => coincoin [admin] => 0 )
Alors évidement lorsque je veut utiliser ces variables de session dans des requêtes, dans le deuxième cas c'est la pagaille car il essayer d'insérer des array au lieu du contenu de la variable de sessions.
Voici le code qui rempli la session :
$pseudo = protegeSql( strip_tags( $_POST['pseudo'] ) );
$motDePasse = protegeSql( strip_tags( $_POST['motDePasse'] ) );
foreach( $membre as $k => $v )
{
if( $v['pseudo'] == $pseudo ) // si on trouve le pseudo dans le tableau des membres, on cherche enssuite le mot de passe
{
if( $v['motDePasse'] == $motDePasse )
{
$_SESSION['membre'] = $v['id']; // on récupère l'id membre dans le tableau
$_SESSION['pseudo'] = $pseudo;
$_SESSION['pwd'] = $motDePasse;
$_SESSION['admin'] = $v['admin'];
}
}
}
Et voici au cas ou le tableau $membre...function getMembre()
{
global $membre;
$req = "SELECT * FROM membre ORDER BY pseudo DESC";
$res = mysql_query( $req ) or die( 'Erreur SQL' );
$i = 1;
while( $data = mysql_fetch_array( $res ) )
{
$membre[$i]['id'] = $data['id_membre'];
$membre[$i]['pseudo'] = $data['pseudo'];
$membre[$i]['motDePasse'] = $data['pwd'];
$membre[$i]['admin'] = $data['admin'];
$i++;
}
//echo '$membre : '; print_r( $membre ); echo '<br />';
}
EDIT :Je viens de découvrir une piste. En local les register global sont à off alors que sur mon hébergement mutualisé elles sont activées. Celà dit je ne vois pas le rapport
Pour vous donner une idée du problème voici une requête qui pose problème sur mon hébergement mutualisé ( avec les register on donc ) :
function testerSession()
{
$membre = $_SESSION['membre'];
$pwd = $_SESSION['pwd'];
$req = "SELECT id_membre FROM membre WHERE id_membre = $membre AND pwd = '$pwd'";
echo $req;
$res = mysql_query( $req ) or die( mysql_error() );
if( mysql_num_rows( $res ) == 1 ) // si on trouve un membre correspondant aux info de la session on retourne vrai
{
return TRUE;
}
}
Et voici son echo suivi du mysql_error :SELECT id_membre FROM membre WHERE id_membre = Array AND pwd = 'coincoin'Unknown column 'Array' in 'where clause'
Je ne comprend pas pourquoi il considère $membre comme un tableau et pas $pwd...