IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modifier mon code de mysql en mysqli avec des include et require


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Modifier mon code de mysql en mysqli avec des include et require
    Bonsoir,

    Je galère depuis 1H pour modifier mon code, en degageant MYSQL au profit de MYSQLI et il semblerait que les fichiers include ou inquire me posent des problemes.

    Fichier conx.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function getmicrotime(){   list($usec, $sec) = explode(" ",microtime());   return ((float)$usec + (float)$sec);  }
    $Date_start = getmicrotime();
     
    $DBhost  = "xxxx"; 
    $DBowner = "xxxxx"; 
    $DBpw    = "xxxxxx"; 
    $DBName  = $DBowner;
    $mysqli = new mysqli($DBhost, $DBowner, $DBpw, $DBName);
     
    $suff_table="extra2_";



    config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    $mysqli->real_query("SELECT * FROM `".$suff_table."config` where idC='1'");   // Requête
    $res = $mysqli->use_result();
    while ($cl = $res->fetch_assoc()){
    .......
    $base_site='http://'.$url_index.'/'.$rep_extranet.'/accueil.php';
    $base_site_err='http://'.$url_index.'/'.$rep_extranet.'/';
    }
     
    function enleveaccents($chaine, $charset='utf-8')
    {
        $chaine = htmlentities($chaine, ENT_NOQUOTES, $charset);
        $chaine = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $chaine);
        $chaine = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $chaine); // pour les ligatures e.g. '&oelig;'
        $chaine = preg_replace('#&[^;]+;#', '', $chaine); // supprime les autres caract�res
        $chaine=str_replace(' ','-',$chaine);
        return $chaine;
    }
     
    function enleveaccents_0($chaine){$chaine = htmlentities($chaine, ENT_NOQUOTES, "UTF-8");
    if ( !function_exists('htmlspecialchars_decode')){function htmlspecialchars_decode($chaine){return strtr($chaine, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));}}return $chaine;}
     
    function enleveaccents_1($str, $charset='utf-8')
    	{
    	$url = $str;
        $url = preg_replace("#'#", "_", $url);
        $url = preg_replace("# #", "_", $url);
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);
    	$url = stripslashes($url);
    	return ($url);
    	}
     
    function enleveaccents_2($str, $charset='utf-8')
    	{
    	$url = $str;
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);
    	return ($url);
    	}
     
     
    function code($txt)
    {
    $txt = htmlentities($txt, ENT_QUOTES, "UTF-8");
    $txt = preg_replace('`\&lt;b&gt;(.+)\&lt;/b&gt;`isU', '<b>$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:red&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:red">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:green&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:green">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:blue&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:blue">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;p&gt;(.+)\&lt;/p&gt;`isU', '<p>$1</p>', $txt);
    $txt = preg_replace('`\&lt;ul&gt;(.+)\&lt;/ul&gt;`isU', '<ul>$1</ul>', $txt);
    $txt = preg_replace('`\&lt;li&gt;(.+)\&lt;/li&gt;`isU', '<li>$1</li>', $txt);
    $txt = preg_replace('`\&lt;i&gt;(.+)\&lt;/i&gt;`isU', '<i>$1</i>', $txt);
    $txt = preg_replace('`\&lt;u&gt;(.+)\&lt;/u&gt;`isU', '<u>$1</u>', $txt);
    $txt = preg_replace('`\&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;`isU', '<div style="clear:both"></div>', $txt);
    $txt = preg_replace('`\&lt;img src=&quot;(.+)\&quot; alt=&quot;(.+)\&quot; style=&quot;float:left; margin:0 5px 5px 0&quot;&gt;`isU', '<img src="$1" alt="$2" style="float:left; margin:0 5px 5px 0">', $txt);
    $txt = preg_replace('`\&lt;strike&gt;(.+)\&lt;/strike&gt;`isU', '<strike>$1</strike>', $txt);
    $txt = preg_replace('`&lt;a href=&quot;(.+)\&quot;&gt;(.+)\&lt;/a&gt;`isU', '<a href="$1">$2</a>', $txt);
    $txt = preg_replace('`&lt;a href=&quot;(.+)\&quot; target=&quot;_blank\&quot;&gt;(.+)\&lt;/a&gt;`isU', '<a href="$1" target="_blank">$2</a>', $txt);
    return $txt;
    }
    $copysimple ='<div class="copyright">2014 - 2016 &copy; IOBnet.com - Extranet V15. </div>';

    session.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?php
    if (($_GET['action'] == 'logout'))
    {
    	$utlog=$_GET['utlog'];
    	$date_compare = strtotime(date("Y-m-d"));
    	$date_con = strtotime(date("Y-m-d H:i:s"));
    	$mysqli->real_query("SELECT * FROM `".$suff_table."journal` where idUT='$utlog' and date='$date_compare' and connexion<>''");
    	$res = $mysqli->use_result();
    	$nbres=mysql_num_rows($res);
    	if ($nbres<>"0"){$mysqli->query("UPDATE `".$suff_table."journal` SET `deconnexion` = '$date_con' where idUT='$utlog' and date='$date_compare' and connexion<>''");}
    	$_SESSION = array();
    	session_destroy();
    	header('Location: '.$base_site_err);
    }
    if (($_GET['action'] <> 'logout'))
    {
       if (isset($_POST) && (!empty($_POST['username'])) && (!empty($_POST['password'])))
       {
    	   extract($_POST);
    	   $cmail = (isset($_POST['username'])) ? $_POST['username'] : '';
       	   $cpass = (isset($_POST['password']))  ? $_POST['password']  : '';
    	   $cpass=md5($cpass);
       }
       else 
       {
       $cmail = $_SESSION['username'];
       $cpass = $_SESSION['password'];
       }
    $mailOK= false;
    if ($cmail<>'')
    {
    	$mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    	$req = $mysqli->use_result();
    	$nbcon=mysql_num_rows($req);
    	if ($nbcon =="1") 
    	{ 
    	    $data = mysql_fetch_assoc($req);
    		    $idUT=$data['idUT'];
    		    $passdata=$data['a_pass'];
    		     if ($cpass==$passdata and $data['a_acc']=="1") 
    			 {
    				if($data['a_pseudo']==""){$_SESSION['username'] = $data['a_mail'];}else {$_SESSION['username'] = $data['a_pseudo'];}
    				$_SESSION['password'] = $data['a_pass'];
    				$mailOK = true; 
    				$mysqli->query("UPDATE `".$suff_table."utilisateur` SET `a_ip` = '$ip' where idUT='$idUT'");
    				$MB_ip=$data['ip'];
    				$mysqli->query("UPDATE extra_utilisateur SET a_dateconx='".strtotime(date("Y-m-d H:i:s"))."' where idUT='$idUT'");
    				$MB_mail=$data['a_mail'];
    				$MB_pass=$data['a_pass'];
    				$MB_pseudo=$data['a_pseudo'];
                                     .....
     
     
     
     
    				$connexion="ok";
    				if ($MB_idUT<>$id_iobnet)
    				{
    					$date_compare = strtotime(date("Y-m-d"));
    					$date_con = strtotime(date("Y-m-d H:i:s"));
    					$mysqli->real_query("SELECT * FROM `".$suff_table."journal` where idUT='$MB_idUT' and date='$date_compare' and connexion<>''");
    					$res = $mysqli->use_result();
    					$nbres=mysql_num_rows($res);
    					if ($nbres=="0"){$mysqli->query("INSERT INTO `".$suff_table."journal` (idUT, date, connexion,ip) VALUES ('$MB_idUT', '$date_compare', '$date_con', '$ip')");}
    				}
    			}
     
    			if ($cpass<>$passdata) {header('Location: '.$base_site_err.'?error=error');}
    			if ($data['a_acc']=='0') {header('Location: '.$base_site_err.'?error=comptesupprime');}
    		}
    		else {header('Location: '.$base_site);	}
    	}
    	else {header('Location: '.$base_site_err);}
    }
    ?>



    et enfin ma page qui ne veut pas s'ouvrir a cause des include ou require
    accueil.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    session_start();
    include ('conx.php');
    include ('config.php');
    include ('session.php');
    $toto=@$_GET['toto'];
    header('Content-Type: text/html; charset=UTF-8');
    extract($_POST);
     
    include ('menu.php');

    Alors que menu.php appelle aussi une fonction mysqli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    include ('session.php');
    $mysqli->query("SELECT * FROM `".$suff_table."dem_com` where toto='$toto");
    $com = $mysqli->use_result();
    $nb_com =mysql_num_rows($com);
    echo $nb_com;

    En conclusion a cause du fichier menu.php, la page accueil.php ne s'affiche pas completement, il semblerait que la page bloque au niveau de l'appel de l'include.
    Il ne faut pas quand meme que je rappel le fichier conx.php dans tous les include et require quand meme ?

    Merci pour toute votre aide et si le code ci-dessous est pourri n'hesitait pas, j'ai besoin d'optimiser et de progresser.

    Bonne soirée a tous
    Guillaume

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il semblerait que
    As-tu vérifié ?

    Déjà le session_start() dans menu.php est à retirer puisque tu l'as déjà accueil.php.
    Ensuite utilise require() plutôt que include() et veille à ce que ton serveur affiche bien toutes les erreurs PHP.
    Également n'utilise pas extract(), c'est une mauvaise pratique.

    Au passage, question de logique d'organisation, je ne vois pas pourquoi la gestion des sessions est dans le fichier "menu".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je ne comprends pas tout fonctionnait quand j'avais mysql en lieu et place de mysqli, j'ai voulu mettre a jour et plus rien de fonctionne .....

    J'ai supprimé les session_start() de tous les fichiers, sauf accueil.php, j'ai modifié les include par des require.

    Par contre que puis je utiliser de mieux que le extract(), car il me rend bien service pour toute variable en POST ?

    Enfin, la premiere erreur vient du fichier session, quand je le lance seul, je vois bien qu'il me renvoi vers la bonen page, mais appelée au travers de acuueil.php, j'ai une erreur 500

    Merci pour ton aide

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise $_POST directement... d'ailleurs tu le fais déjà donc ton extract ne sert à rien, par exemple ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       extract($_POST);
    	   $cmail = (isset($_POST['username'])) ? $_POST['username'] : '';
    Au passage cette partie de code ne sert à rien puisque tu as un test une ligne au dessus qui a deja vérifie que $_POST['username'] existe.

    qui ne semble pas
    As-tu contrôlé, vérifié, testé ?
    Dans ton fichier tu as toujours tes fonctions mysql au lieu de mysqli.
    Personnellement j'abandonnerai de toute façon mysqli qui est une plaie pour utiliser PDO qui est tellement plus simple.

    Ecris proprement tes enchainement logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($_GET['action'] == 'logout'))
    {
    	....
    }
    if (($_GET['action'] <> 'logout'))
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($_GET['action'] == 'logout'))
    {
    	....
    }
    else {
    Ne met pas des " partout :
    =>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    J'ai procédé a tous les changements car oui effectivement, a force de modifier petit bout de code par petit bout, on ecrit des sequences inutiles et on met des doubles quotes au chiffres...bref... désolés.

    Cependant, j'ai toujours un double dysfonctionnement

    1 - qui doit venir de la fonction mysqli_num_rows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    $req = $mysqli->use_result();
    $nbcon=mysqli_num_rows($req);
    meme si j'utilise orienté objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = $mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    $nbcon= $req ->num_rows;
    printf("il y a %d lignes", $nbcon);
    le print est vide

    2 dans le fichier accueil.php, dans le meme genre mais avec SUM et mysqli_result ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mysqli->real_query("SELECT SUM(totfin) FROM `".$suff_table."utilisateur` U, `".$suff_table."dem` D, `".$suff_table."dem_pro` P, `".$suff_table."dem_suivi` S where P.idCLIENT=D.idCLIENT and D.idCLIENT=S.idCLIENT $prp_0 and D.idUT=U.idUT and ((P.pro_nombanque_1='$vari' and P.pro_select_1='1') or (P.pro_nombanque_2='$vari' and P.pro_select_2='1') or (P.pro_nombanque_3='$vari' and P.pro_select_3='1')) and D.supp='0'"); 
    $res = $mysqli->use_result();
    $total = mysqli_result($res,0);$total=$total/1000; $total=ceil($total);
    Dans ces deux cas j'ai soit un plantage Erreur 500 soit rien????


    Sinon, PDO me parait tellement plus compliqué, car mysqli est natif donc ça me parle plus que PDO qui semble plus long en quantité de ligne quand on debute....

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par kaolivier Voir le message
    ...a force de modifier petit bout de code par petit bout...
    commence déjà par "nettoyer" ton code.
    Tu y verras plus clair...


    Ensuite, comme ça t'a déjà été conseillé, passe à PDO, d'autant que tu utilises mysqli en orienté objet, donc ça ne devrait pas être trop difficile de changer.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je vous remercie de me conseiller PDO, mais j ai un blocage avec lui, je me sens plus a l'aise dans la comprehension avec mysqli et ce dernier n'est pas prés d'etre obsolete.

    Si vous pouviez m'aider avec mysqli, sinon je vais vous inonder de question pour comprendre comment transformer tous mes msql en PDO, et franchement mes questions ne vont pas etre belles ..

    Non serieux, merci de votre aide avec mysqli

  8. #8
    Invité
    Invité(e)
    Par défaut
    AUCUNE de tes requête n'est SECURISEE contre les injections SQL.

    • "requête préparée"


    Perso, je n'utilise pas mysqli. Bon courage...

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    En fait, ces scripts ne sont pas accessibles par des tiers, mais uniquement en interne (CRM), et la seule façon d'y acceder est de passer par une page contenant un formulaire dont les login et password sont hachés en MD5. Aprés je n'ai nullement la prétention de parvenir a la sécurisation ultime de mes scripts, bien au contraire, je suis la pour apprendre. Mais pourquoi imposer PDO, partout je vois qu'il y a autant d’intérêt que d’inconvenants de passer en PDO que de passer a mysqli ? Concernant MYSQLI on peut aussi être protegé contre les injections.

    Merci en tout cas de m'avoir lu.

  10. #10
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    que vos scripts ne soient pas accessibles par un tiers n'est pas une raison suffisante pour ne pas les protéger (http://php.net/manual/fr/mysqli.quic...statements.php).
    Erreur 500 (vous développez sans l'affichage d'erreurs) , vérifiez vos logs d'erreurs PHP et au passage activez les erreurs mysqli mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); et ça "SELECT * FROM `".$suff_table."journal`...." => "SELECT * FROM `{$suff_table}journal`....." les {} ne sont pas obligatoires.

    Maintenant md5, je ne sais pas quelle est la version utilisée mais bon il y a tout de même password_hash.
    Le bienfait n'est jamais perdu

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Mais pourquoi imposer PDO
    Parce que Mysqli est très compliqué, ne sert que pour mysql et que PDO ressemble au final plus à l'antique extension mysql.
    Je suis comme jreaux62, je n'utilise pas mysqli pour ces raisons et donc je n'aime pas relire des codes mysqli.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bon.
    On n'arrivera pas à te convaincre...
    Citation Envoyé par kaolivier Voir le message
    ...Je galère depuis 1H pour modifier mon code...
    LOL.......................


    J'ai une ASTUCE pour fainéants...

    LAISSE TOUT en mysql_ (!) et ajoute en début de script :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
    Ca masquera le warning "mysql is DEPRECATED"....

    Ni vu ni connu j't'embrouille...

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Comme mes collègues, je n'ai jamais utilisé mysqli : je suis passée directement de l'ancienne API mysql à PDO. Cela dit, tu peux utiliser mysqli sans les requêtes préparées en utilisant quasiment la même syntaxe que l'ancienne API mysql.

    Pour gérer les valeurs externes, tu peux utiliser mysqli::real_escape_string / mysqli_real_escape_string pour échapper les valeurs. En fait, tu aurais dû déjà utiliser mysql_real_escape_string dans ton ancien code avec l'API mysql...
    Dire "mon application est utilisée uniquement en interne, je n'ai pas besoin de sécuriser les données" c'est un peu comme dire "je n'ai pas besoin de mettre quoi que ce soit sous clé dans ma maison, il n'y a que ma famille". L'adolescent qui craint que sa mère tombe sur sa collection de PlayBoy, la mère qui tente d'empêcher son bébé de gouter l'eau de javel, ou la fille qui veut éviter que son petit frère utilise ses barbies comme jouets pour le chien, te diront que ce n'est pas une bonne idée...

    Pour tes requêtes en particulier :
    Pour num_rows, tu peux essayer d'utiliser mysqli_store_result() au lieu de mysqli_user_result pour voir si il y a une différence. Utiliser une approche différente peut également être une option : un select count si tu n'as besoin que du nombre de lignes et pas des données proprement dites, ou un compteur mis à jour pendant le parcours des lignes...

    Pour l'accès au résultat de la somme, je suppose que tu essayes de reproduire la fonction mysql_result. Elle n'existe pas en mysqli. Personnellement, j'utiliserais un fetch_array standard et récupèrerais la colonne 0 du résultat.

    @jreaux : si c'est une heure sur une seule et même requête, ça autorise de s'énerver
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celira Voir le message
    ...L'adolescent qui craint que sa mère tombe sur sa collection de PlayBoy...
    Ne m'en parle pas ! Elle m'a tout piqué !! Dégouté !!!


    Enfin..... c'était pas moi.... c'était la mère d'un copain....

    ....je vous parle d'un temps que les moins de 20 ans.......... (souvenirs, souvenirs.....).

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ajoute seulement que le traitement des données externes à une requête ce n'est pas qu'un problème de sécurité.
    Quand on met des chaines avec des apostrophes ou des guillemets dans une requête, on casse sa chaine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ou si on tape des lettres à la place d'un nombre... Le bébé qui tête la bouteille d'eau de javel n'a pas conscience d'être en train de faire une bêtise.

    Bref, principe de base : "Never trust user input" (ne jamais faire confiance aux données entrées par l'utilisateur") et son corollaire : l'utilisateur est bête, maladroit et méchant.
    bête : "et maintenant, je clique où ?" "je mets quoi dans ce champ ?"
    maladroit : "oups, j'aurais p'tet pas dû cliquer là", "oups j'ai inversé date de début et date de fin"
    méchant : "et si je valide sans renseigner ce champ, il se passe quoi ?", "et si je mets la date au 30 février, il se passe quoi ?"
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  17. #17
    Invité
    Invité(e)
    Par défaut
    @Celira

    Là, tu confonds "méchanceté" et "curiosité mal placée".

    La "méchanceté", c'est quand on sait pertinemment qu'on fait quelque chose de mal.

  18. #18
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Disons que je mets dans la 3e catégorie toutes les manoeuvres qui ne sont dues ni à l'ignorance, ni à la maladresse, mais à une volonté délibérée, que ce soit fait "juste pour voir" ou dans l'objectif de nuire.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Vous êtes tous méchants avec moi

    Mais tout ce que vous dites est quand même très intéressant ..

    Bon devant la pression, je vais peut être m’intéresser a PDO, mais c'est uniquement parce que j'ai pas le choix, et que moi je préfère que vous soyez gentils, c'est plus constructif ..

  20. #20
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    On est pas méchants, c'est juste qu'on aime pas mysqli, et que du coup, on ne l'utilise pas. Et par conséquent, qu'on est 1) moins motivés et 2) peu compétents pour t'aider avec mysqli.
    Alors que PDO on gère, hein les gars

    ~Celira repense au tuto PDO qu'elle avait envisagé d'écrire en janvier et qui n'est toujours pas écrit...~
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [XL-2007] Modifier mon code
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/08/2014, 10h20
  2. [MySQL] aider moi a modifier mon code
    Par tapoza dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 11/06/2011, 17h59
  3. [Tableaux] comment doit-je modifier mon code
    Par teen6517 dans le forum Langage
    Réponses: 10
    Dernier message: 27/02/2007, 13h22
  4. Qui modifie mon code PL?
    Par flonardi dans le forum Oracle
    Réponses: 3
    Dernier message: 31/05/2006, 10h44
  5. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo