PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » connexion a mysql - variable "standard" » 25-09-2010 21:49:01

Apres si c'est pour utiliser a la ligne suivante et pas autre part c'est totalement inutile

oui exact c'est pour la ligne juste en dessous, mais en faite c'est un script de news que je propose sur comscripts... donc je dois quand-même faire au plus simple pour l'utilisateur..
merci pour ta réponse

#2 Forum Général PHP » connexion a mysql - variable "standard" » 25-09-2010 21:49:01

david7
Réponses : 2

Salut a tous


<?php

// Ouvre une connexion persistante à un serveur MySQL
$link = mysql_pconnect('xxx', 'xxx', 'xxx');
if (!$link) {
   die('Impossible de se connecter');
}

// Sélectionne une base de données MySQL
$db_selected = mysql_select_db('xxx', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données');
}

?>
 

Ma question :
Pour les variable en haut de ma page conf.php pour la connexion a mysql,
j'utilise plutôt la solution 1 2 ou 3 ?


$mysql_server = 'xxx';
$mysql_user  = 'xxx';
$mysql_password  = 'xxx';
$mysql_db  = 'xxx';
 

define("MYSQL_HOTE", "xxx");
define("MYSQL_USER", "xxx");
define("MYSQL_PASSWORD", "xxx");
define("MYSQL_BDD", "xxx");
 

$config["bdd"]["hote"] = "xxx";
$config["bdd"]["user"] = "xxx";
$config["bdd"]["password"] = "xxx";
$config["bdd"]["bd"] = "xxx";
 

il y a bien une des 3 methodes plus récente que les autres ou bien plus "standard" ?

merci

#4 Forum Général PHP » probleme de connexion a mysql avec easyphp » 25-09-2010 00:40:25

david7
Réponses : 1

bonjour a tous

j'ai un probleme de connexion a mysql avec easyphp
aucun message d'erreur, rien, une page blanche...
voici ma page de connexion :


<?php

// configuration générale
define("MYSQL_HOTE", "localhost");
define("MYSQL_USER", "root");
define("MYSQL_PASSWORD", "");
define("MYSQL_BDD", "dynscripts");

define("NEWS_LIMIT", "5");
define("NEWS_TYPE", "AUTO"); // HTML or AUTO

// ne pas toucher
$connect = @mysql_pconnect(MYSQL_HOTE, MYSQL_USER, MYSQL_PASSWORD);

session_start();

if (!$connect)
{
echo("Veuillez vérifier les identifiants de connexion à la base de données !");
exit();
}

if (!mysql_select_db(MYSQL_BDD, $connect))
{
echo("Impossible de se connecter à la base de données !");
exit();
}

?>
 

merci

oops, j'ai oublié de dire aussi que c'est trés trés lent... sinon ma page connexion fonctionne tres bien chez free.fr par exemple mais pas en local je sais pas pourquoi......

#5 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

oui mais bizarrement.. je comprend mieu l'autre big_smile
il ma lair plus fuide, plus facile a lire d'un seul coup d'oeil toi t'en pense quoi niveau qualité du code je veux dire

#6 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

le mien.. le code juste en dessus avec les 31 lignes ?

#7 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

^^ je look a chaque fois mon code (meme t'es réponses je regarde bien) mais parfois je comprend pas trop les "termes" donc j'ai du mal mais sinon je suis pas du genre parresseu cher collaborateur wink je me donne du mal pour apprendre, je demande sur les forums, je cherche sur des sites a l'aide de google, etc... smile

mais sinon j'ai un script la sous la main, un espace membre avec biensur une page login.php j'ai regardé l'histoire du 0 dedans pour la connexion la etc... c'est pas la meme chose enfin c'est different non ? c'est plus propre non ? je prend lequel le mien ou celui la ? (je parle juste de cette portion) regarde :

<?php

if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$login = postInput($_POST["login"]);
$password = postInput($_POST["password"]);

  $r = mysql_query("select idmbr from membres where login='$login' and password='".md5($password)."' and etat=1;");
  if (mysql_num_rows($r)==0)
  {
  $_GET["msg"] = "Veuillez vérifier vos informations";
  }
  else
  {
    $idmbr = mysql_result($r,0,"idmbr");
   
    $_SESSION["membre"]["idmbr"] = $idmbr;
    $_SESSION["membre"]["login"] = $login;
    $_SESSION["membre"]["password"] = $password;
   
    header("location: index.php");
    exit();
  }
}
else
{
$login = "";
$password = "";
}

?>

biensur je parle PAS du isset en haut ainsi que de l'erreur en GET big_smile j'ai pigé la leçon l'autre jour smile

#8 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

"session_start() est à mettre en début de script et non au milieu. Sinon il va te générer des erreurs."
en haut de la page ? ok

"PS : ta première comparaison est à faire avec la valeur 1 et non 0."
? hein ou ?

#9 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

ok mais je rajoute le { a la fin ? comme ceci :

    // si on obtient une réponse, alors l'utilisateur est un membre
    if (isset($data[0]) && $data[0] == 0 ) {
      session_start();
      $_SESSION['login'] = $_POST['login'];
      header('Location: membre.php');
      exit();
    }
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    elseif (isset($data[0]) && $data[0] == 0 ) {
      $erreur = 'Compte non reconnu.';
    }
    // sinon, alors la, il y a un gros problème :)
    else {
      $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    }
 

#10 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

ok j'ai remplacé la ligne 18 :
       

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

PAR :
       

$req = mysql_query($sql) or die('Erreur SQL !');

c'est bon ?

sinon pour la 25/32 je cherche mais je réussi pas a comprendre comment faire.. tu pourrais me faire un exemple si sa te derange pas ?

#11 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

ok merci j'ai modifié les 2 premiers points aussi celui de Kris sur la faille.. voici le nouveau code :

* Ligne 6-7 : tu ne gères pas les erreurs de connexion, si la connexion ne peut se faire le script sera tout de même chargé actuellement
jette un oeil pour me dire si c'est bon stp ou si il y a mieu a faire smile

sinon je comprend pas les points suivants :

* Ligne 11 : tu affiches la requête à tous les passants du coin en cas d'erreur !!!!! Certains pourraient se faire un malin plaisir à faire joujou avec ta page... Ne jamais donner d'informations sur le script aux visiteurs, c'est une règle d'or !
je retire quoi dans la ligne : $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
le $sql sans doute ? mais je pige pas car il y a des ' au debut/a la fin j'efface d'ou a ou ? hmm

* Ligne 18 : si la requête ne renvoie aucun résultat ta variable ne sera pas initialisée à cet index, il manque donc un isset.
je comprend pas (dsl)

* Ligne 25 : idem
je comprend pas (dsl)

voici le nouveau code (attention le numéro des lignes ci-dessus car j'ai modifié donc plus les memes...)

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (!empty($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  if !empty($_POST['login']) && !empty($_POST['pass']) {

    $mabasededonnee="nombase";

    $base = mysql_connect("localhost","root","motdepasse");
    // test la connection
    if ( ! $base )
    die ("connection impossible");

    // Connecte la base
    mysql_select_db($mabasededonnee) or die ("pas de connection");

    // on teste si une entrée de la base contient ce couple login / pass
    $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);

    mysql_free_result($req);
    mysql_close();

    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($data[0] == 1) {
      session_start();
      $_SESSION['login'] = $_POST['login'];
      header('Location: membre.php');
      exit();
    }
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    elseif ($data[0] == 0) {
      $erreur = 'Compte non reconnu.';
    }
    // sinon, alors la, il y a un gros problème :)
    else {
      $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    }
  }
  else {
    $erreur = 'Au moins un des champs est vide.';
  }
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value=""><br />
Mot de passe : <input type="password" name="pass" value=""><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>

#12 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

merci pour ta réponse.
sinon j'ai pas conpris : "mais pas propre de tester un !empty sur un false..." c'est a dire ? tu ma dit que je pouvais faire pareil.

#13 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

ah ok donc comme ceci :

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (!empty($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  if !empty($_POST['login']) && !empty($_POST['pass']) {

ou bien :

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if !empty($_POST['connexion'] == 'Connexion') {
  if !empty($_POST['login']) && !empty($_POST['pass']) {

#14 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

xTG : pour le empty dans ta premiere remarque c'est comme ceci ?

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  if !empty($_POST['login']) && !empty($_POST['pass']) {

#15 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

xTG : oui pas faux pour les étoiles ! je supprime wink je boss aussi sur t'es premiers conseils dans ton premier post ! merci.

"Laisse tomber xTG, quand il viendra pleurer ici parce que son site aura été victime d'attaques, il sera probablement plus réceptif à nos conseils."
pourquoi tu parle comme cela ??? c'est un forum d'entraide, tu post une seule ligne par post aprés tu veux qu'un debutant (comme moi) arrive a comprendre.. dsl si je comprend pas tout de suite d'un seul coup messieur.

#16 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

comment le hacker obtient la meme source que le visiteur ? le visiteur chez lui bien tranquil ! hmm

#17 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

ba oui.... enfin bref je comprend toujours pas Kris !
le visiteur tape le mot de passe dans le champ password du formulaire, ensuite il clic sur Connexion mais a un message d'erreur il clic-droit "Afficher la source" dans la source il y a le mot de passe en clair (donc le mauvais mot de passe ou meme pseudo qui la tape) et alors ??? s'il a pas les bons login/mot de passe il pourra rien faire donc ??? et alors !

#18 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

c'est le mot de passe que tape le membre donc ? il verra le mot de passe qu'il tape c'est tout

#19 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

mummm mais... de toute façon j'arrive toujours pas a comprendre "la faille" xTG.. puis toi non plus car tu pose la meme question que moi a Kris :
"Qu'est ce que cela peut générer comme faille de sécurité Kris ?
Hormis le mot de passe en clair dans le code html généré."

car meme avec le mot de passe en clair dans le code HTML, c'est le mot de passe que tapera le visiteur dans le formulaire de connexion donc je vois pas de faille... ?!

#20 Re : Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

"De nombreux site le font, PhpBB compris dans le lot (bon sauf pour le mot de passe...)."
font quoi ?^^

"Qu'est ce que cela peut générer comme faille de sécurité Kris ?
Hormis le mot de passe en clair dans le code html généré."
en clair ?! a quel moment ? hmm

kris : "Moi ce sont les lignes 46 et 47 qui me font froid dans le dos." ok mais pourquoi ?

#21 Forum Général PHP » amélioration du code / suggestion » 17-02-2010 12:40:59

david7
Réponses : 36

salut a tous

mon code fonctionne parfaitement smile mais je souhaite savoir si il y a des améliorations a faire... ou bien des suggestions de votre part :
si oui : donnez moi un maximum d'explications SVP car je ne suis pas un expert du tout.. smile

login.php (connexion a un espace membre)

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

    $base = mysql_connect ('serveur', 'login', 'password');
    mysql_select_db ('nom_base', $base);

    // on teste si une entrée de la base contient ce couple login / pass
    $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);

    mysql_free_result($req);
    mysql_close();

    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($data[0] == 1) {
      session_start();
      $_SESSION['login'] = $_POST['login'];
      header('Location: membre.php');
      exit();
    }
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    elseif ($data[0] == 0) {
      $erreur = 'Compte non reconnu.';
    }
    // sinon, alors la, il y a un gros problème :)
    else {
      $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    }
  }
  else {
    $erreur = 'Au moins un des champs est vide.';
  }
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>

Merci smile

#22 Re : Forum Général PHP » NuSphere PhpED ? » 05-02-2010 19:53:22

j'ai utilisé phped sur le pc d'un ami, c'est pas mal je trouve mais je voulais voir vos avis smile

#23 Forum Général PHP » NuSphere PhpED ? » 05-02-2010 19:53:22

david7
Réponses : 2

bonjour

connaissez vous NuSphere PhpED ?
si oui : pouvez vous m'en dire plus ? c'est pas mal ?

merci

#24 Re : Forum Général PHP » des suggestions ? » 04-02-2010 22:12:21

"Lis le lien qu'a posté Kris, tu devrais comprendre tout est expliqué dedans. ^^"
"-> j'ai pourtant lu la petite doc dessus dans ton lien" A premiere vu tu as pas lu entierement mon post oh pas biennnn^^

sinon pour le mysql_num_rows daccord mais c'est pas trés grave.. si ? enfin je veux dire c'est du propre aussi quoi non ?

#25 Re : Forum Général PHP » des suggestions ? » 04-02-2010 22:12:21

xtg : j'ai regardé mais.. enfin je comprend pas trop! ni ta premiere remarque ni ta 2eme j'ai pourtant lu la petite doc dessus dans ton lien mais je comprend pas le rapport avec ta phrase "Tu peux rejoindre isSet et Empty dans un seul Empty"
j'ai demandé a un ami il comprend pas non plus... c'est pas trés claire pour un debutant. réexplique moi STP si sa te dérange pas biensur xtg ! (ou Maljuna Kris si ta conpris se qu'il voulais dire..)

Pied de page des forums

Propulsé par FluxBB