AndroWiiid

Inscris le 16/04/2010 à 14:42
  • Site web
  • Nombre de sujets
    1
  • Nombre de messages
    3
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
AndroWiiid
le 21/04/2010 à 20:38
Du local au Web
Bonsoir,

Je me tourne vers vous parce que j'ai beau cherché une réponse à mon problème parmi mes bouquins ou les tutoriels, je ne trouve rien qui puisse m'aider.
Voici la situation :

J'ai développé mon site Web en local (Sans blague :p !) et je suis arrivé à un résultat que je juge plus que satisfaisant.
Une fois sure que tout était parfait, j'ai placé mon site web sur mon serveur (OVH).
Là, catastrophe. Une multitude de petites erreurs se glissent dans mon code. Certains notables, d'autres beaucoup moins.
Pour la plupart, j'ai réussis à résoudre le problème mais deux points persistent et sont plus qu'embêtant :

- mysql_real_escape_string : La fonction php mysql_real_escape_string() ne semble pas marché sur le Web. Est-ce normal
Voici un exemple de l'utilisation de cette fonction :
<?php
$_POST['pseudo'] = mysql_real_escape_string(htmlentities($_POST['pseudo']));
?>

Il me semble me manquer un paramètre mais je ne vois pas lequel.

- Session : Là repose mon plus gros problème. J'ai développé un système d'espace membre pour les visiteurs qui désirent s'inscrire mais voilà, une fois que quelqu'un se connecte sur mon site. Il se connecte bien mais s'il clique sur un lien interne au site, il est automatiquement connecté en tant que AndroWiid (moi). J'ai d'abord pensé un souci dans les variables $_SESSION mais je les ai affiché. Quand il se conecte, il y a bien ses identifiants dans les variables Sessions. J'ai beau cherché, je ne vois pas ce qui pourrait provoquer cela =/.

<?php
// Traitement du formulaire de connexion
if(isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion')
{
$erreur_txt = '';
$erreur = 0;

//Mesure de sécurité.
$_POST['pseudo'] = mysql_real_escape_string(htmlentities($_POST['pseudo']));
$_POST['passwd'] = mysql_real_escape_string(htmlentities($_POST['passwd']));

// On vérifie si le pseudo est bien spécifié
if (!isset($_POST['pseudo']) || empty($_POST['pseudo']))
{
$erreur_txt .= 'Vous devez remplir le champ du pseudo !<br />';
$erreur++;
}

// On vérifie si le password est bien spécifié
if (!isset($_POST['passwd']) || empty($_POST['passwd']))
{
$erreur_txt .= 'Vous devez remplir le champ du password !<br />';
$erreur++;
}

if ($erreur == 0)
{
$_POST['pseudo'] = addslashes($_POST['pseudo']);
$_POST['passwd'] = md5($_POST['passwd']);

connexionbdd();
$sql = 'SELECT COUNT(*), rang, avatar, id
FROM membres
WHERE pseudo = "'.$_POST['pseudo'].'"
AND passwd = "'.$_POST['passwd'].'"';
$req = mysql_query($sql)
or die('Erreur SQL : <br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_close();

// On trouve le couple pseudo/passwd dans la bdd
if($data[0] == 1)
{
$_SESSION['admin'] = false;
$_SESSION['acces_autorise'] = true;
$_SESSION['pseudo'] = stripslashes($_POST['pseudo']);
$_SESSION['id'] = $data['id'];
$_SESSION['avatar'] = $data['avatar'];
if($data['rang'] >= 1)
{
$_SESSION['admin'] = true;
}

//header('Location: index.php');
//exit();
}
// On ne trouve pas le couple pseudo/passwd
elseif ($data[0] == 0)
{
header('Location: ?pages=erreur&err=20');
exit();
}
// Erreur avec la base de donnée
else
{
header('Location: ?pages=erreur&err=10');
exit();
}
}
}
?>


- Serveur : C'est la seule chose à laquelle j'ai pensé. Est-ce possible que cela soit la configuration chez OVH qui fasse déconner mon site comme ça ?

Merci d'avance pour vos réponses !

Ses derniers messages sur les forums

forum
AndroWiiid
le 25/04/2010 à 15:31
help Formulaire de donné
Me semble qu'il te suffit de mettre ton menu déroulant et quand tu traiteras le formulaire tu feras une requête de type :

<?php
$sql = 'INSERT INTO '.$var_menu_deroulant.' VALUES (...)';
?>
AndroWiiid
le 24/04/2010 à 14:48
Du local au Web
Bonjour,

Merci pour toutes vos réponses vachement constructive. Alors comme il y a pas mal de truc à assimilé d'un coup, juste un petit topo histoire de voir si j'ai bien tout compris =) :

@dark_nemo

- mysql_real_escape_string : Ouaip, je m'en suis rendu compte par après. Maintenant, j'ai appelé ma fonction de connexion en début de code dans ma page index.php et mysql_close en fin de code de la même page. Histoire de ne plus devoir l'appeler et la fermer tout le temps.

- print_r($data) : Ouaip, on m'avait conseillé de marquer une fonction similaire me semble (var_dump()) et il affichait bien mes identifiants une fois que je naviguais sur mes pages en me connectant avec un autre compte. Le problème reposait sur un changement des variables à chaque changement de page. J'ai réglé le problème, je vais en parler plus bas.

@LupusMic

- Modification variable $_POST : Oui, on m'a fais la remarque et je me rend compte de ma bétise. Histoire de voir si c'est correcte, maintenant j'utilise la variable extract($_POST) avant tout chose puis je traite directement avec les variables $pseudo, ... qu'il me sort.

- addslashes : Effectivement, ce n'est pas la meilleure idée que j'ai eu x). J'enlève cela de suite.

- Redirection des erreurs : En faite, j'ai deux types d'erreur. La première est la sauvegarde dans une variable ($erreur_txt par exemple) des erreurs dans un formulaire que j'affiche directement sur la même page au dessus du formulaire. Au départ, je voulais faire uniquement comme ça. Après, je me suis rendu compte que certaines erreurs étaient un peu à part (comme erreur avec la base de donnée) et qu'elle revenait souvent dans mes requêtes. Donc, j'ai codé un script d'erreur qui affiche (selon la variable $_GET dans l'url, l'erreur a affiché). Ce n'est pas une bonne façon de faire ?

@dark_nemo

- Affichage des requêtes : C'était juste pendant que je programmais. Je les enlève une fois en ligne =).

Sinon, pour mon problème initial, il m'a fallu changé le nom de mes variables de session. Il semblait y avoir ambiguité avec d'autres variables de même nom (mais pas de même type). Depuis lors, ça marche sans problème.

Merci pour vos réponses vachement constructive !
AndroWiiid
le 21/04/2010 à 20:38
Du local au Web
Bonsoir,

Je me tourne vers vous parce que j'ai beau cherché une réponse à mon problème parmi mes bouquins ou les tutoriels, je ne trouve rien qui puisse m'aider.
Voici la situation :

J'ai développé mon site Web en local (Sans blague :p !) et je suis arrivé à un résultat que je juge plus que satisfaisant.
Une fois sure que tout était parfait, j'ai placé mon site web sur mon serveur (OVH).
Là, catastrophe. Une multitude de petites erreurs se glissent dans mon code. Certains notables, d'autres beaucoup moins.
Pour la plupart, j'ai réussis à résoudre le problème mais deux points persistent et sont plus qu'embêtant :

- mysql_real_escape_string : La fonction php mysql_real_escape_string() ne semble pas marché sur le Web. Est-ce normal
Voici un exemple de l'utilisation de cette fonction :
<?php
$_POST['pseudo'] = mysql_real_escape_string(htmlentities($_POST['pseudo']));
?>

Il me semble me manquer un paramètre mais je ne vois pas lequel.

- Session : Là repose mon plus gros problème. J'ai développé un système d'espace membre pour les visiteurs qui désirent s'inscrire mais voilà, une fois que quelqu'un se connecte sur mon site. Il se connecte bien mais s'il clique sur un lien interne au site, il est automatiquement connecté en tant que AndroWiid (moi). J'ai d'abord pensé un souci dans les variables $_SESSION mais je les ai affiché. Quand il se conecte, il y a bien ses identifiants dans les variables Sessions. J'ai beau cherché, je ne vois pas ce qui pourrait provoquer cela =/.

<?php
// Traitement du formulaire de connexion
if(isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion')
{
$erreur_txt = '';
$erreur = 0;

//Mesure de sécurité.
$_POST['pseudo'] = mysql_real_escape_string(htmlentities($_POST['pseudo']));
$_POST['passwd'] = mysql_real_escape_string(htmlentities($_POST['passwd']));

// On vérifie si le pseudo est bien spécifié
if (!isset($_POST['pseudo']) || empty($_POST['pseudo']))
{
$erreur_txt .= 'Vous devez remplir le champ du pseudo !<br />';
$erreur++;
}

// On vérifie si le password est bien spécifié
if (!isset($_POST['passwd']) || empty($_POST['passwd']))
{
$erreur_txt .= 'Vous devez remplir le champ du password !<br />';
$erreur++;
}

if ($erreur == 0)
{
$_POST['pseudo'] = addslashes($_POST['pseudo']);
$_POST['passwd'] = md5($_POST['passwd']);

connexionbdd();
$sql = 'SELECT COUNT(*), rang, avatar, id
FROM membres
WHERE pseudo = "'.$_POST['pseudo'].'"
AND passwd = "'.$_POST['passwd'].'"';
$req = mysql_query($sql)
or die('Erreur SQL : <br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_close();

// On trouve le couple pseudo/passwd dans la bdd
if($data[0] == 1)
{
$_SESSION['admin'] = false;
$_SESSION['acces_autorise'] = true;
$_SESSION['pseudo'] = stripslashes($_POST['pseudo']);
$_SESSION['id'] = $data['id'];
$_SESSION['avatar'] = $data['avatar'];
if($data['rang'] >= 1)
{
$_SESSION['admin'] = true;
}

//header('Location: index.php');
//exit();
}
// On ne trouve pas le couple pseudo/passwd
elseif ($data[0] == 0)
{
header('Location: ?pages=erreur&err=20');
exit();
}
// Erreur avec la base de donnée
else
{
header('Location: ?pages=erreur&err=10');
exit();
}
}
}
?>


- Serveur : C'est la seule chose à laquelle j'ai pensé. Est-ce possible que cela soit la configuration chez OVH qui fasse déconner mon site comme ça ?

Merci d'avance pour vos réponses !

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours