[RESOLU] Probleme (Je ne trouve pas l'erreur) site web Html/Php/Sql

Petit nouveau ! | 9 Messages

20 janv. 2021, 23:08

Bonjour a tous, je suis en plein développement d'un site web, je rencontre quelques difficultés lorsqu'il faut que j'intègre les données d'un formulaire dans ma base de donnée MySQL. Je vous laisse regarder le problème... Je suis débutant, si vous avez des conseils, des remarques ou des conseils constructifs, je prend avec grand plaisir. Merci d'avance.

Pour commencer, j'ai un espace membre qui utilise la variable $_SESSION['identifiant'] .
espace-membre.php <-- Ici tout fonctionne
<?php
session_start();
if (!isset($_SESSION['identifiant'])) {
    header('Location: index.php');
    exit();
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name='robots' content='noindex, nofollow' />
        <title>Espace membre</title>
    </head>
    
    <body>    
        <p>Espace Membre<br />
            Bienvenue <?php echo htmlentities(trim($_SESSION['identifiant'])); ?> !<br /> </p>
        
        <a href="modificationespacemembre.php">Consulter ses informations personnelle</a>
        <br />
        <a href='deconnexion.php'>Déconnexion</a>
    </body>
</html>

Ensuite, depuis cet espace membre, je peux me rediriger vers le fichier 'modificationespacemembre.php' qui permet a l'utilisateur de rentrer plus d'informations sur lui grâce a un formulaire.
modificationespacemembre.php
<?php
session_start();
if (!isset($_SESSION['identifiant'])) {
    header('Location: index.php');
    exit();
}
include ("../connect.php");

$connexion = new mysqli(SERVEUR, LOGIN, MDP, BDD); //Enlever bdd si erreur
if (!$connexion) {
    echo "LA CONNEXION AU SERVEUR MYSQL A ECHOUE\n";
    exit;
}
print "Connexion BDD reussie puis";
echo "<br />";
$sql = 'SELECT * FROM membre WHERE pseudo="' .mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
$req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
$data = mysqli_fetch_array($req);
?>
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <meta name='robots' content='noindex, nofollow' />
        <title>Modification infos</title>
    </head>
    <body>
        <p>Vous n'êtes pas obligés de remplir tout les champs pour valider vos informations</p>
        <form action="verificationmodifespacemembre.php" method="post">
            <fieldset> <legend>Vos identifiants et mots de passe</legend>
            <label for='pseudo'>Identifiant</label> <input type='text' name='pseudo' placeholder='<?php echo $_SESSION['identifiant']; ?>' id='pseudo' /> <br />
            <label for='ancienmdp'>Mot de passe actuel</label> <input type='password' name='ancienmdp' id='ancienmdp'>
            <label for='mdp'>Nouveau mot de passe</label> <input type='password' name='mdp' value='' placeholder="Nouveau mdp" id='mdp'/>
            </fieldset>
            <fieldset> <legend>Vos coordonnées</legend>
            <label for='nom'>Nom</label> <input type='text' name='nom' placeholder='<?php if (!empty($data['nom'])) { echo $data['nom']; } else { echo 'Nouveau nom'; } ?>' id='nom'/> <br />
            <label for='prenom'>Prénom</label> <input type='text' name='prenom' placeholder='<?php if (!empty($data['prenom'])) { echo $data['prenom']; } else { echo 'Nouveau prénom'; } ?>' id='prenom'/> <br />
            <label for='email'>Email</label> <input type='email' name='email' size="35" placeholder='<?php if (!empty($data['email'])) { echo $data['email']; } else { echo 'Nouvelle adresse mail'; } ?>' id='email'/> <br />
            <label for='numero'>Numéro tel</label> <input type='tel' name='numero' maxlength="15" placeholder='<?php if (!empty($data['numero'])) { echo $data['numero']; } else { echo 'Nouveau numéro'; } ?>' id='numero'/>
            </fieldset>
            <fieldset> <legend>Adresse de livraison</legend>
            <label for='adresse'>Adresse</label> <input type='text' name='adresse' size="50" placeholder='<?php if (!empty($data['adresse'])) { echo $data['adresse']; } else { echo 'Nouvelle adresse'; } ?>' id='adresse'/> <br />
            <label for='complementadresse'>Complément d'adresse</label> <input type='text' name='complementadresse' size="50" placeholder='<?php if (!empty($data['complementAdresse'])) { echo $data['complementAdresse']; } else { echo 'Informations supplémentaires'; } ?>' id='complementadresse'/> <br />
            <label for='codepostal'>Code Postal</label> <input type='number' name='codepostal' maxlength="10" placeholder='<?php if (!empty($data['codePostal'])) { echo $data['codePostal']; } else { echo 'Nouveau code postal'; } ?>' id='codepostal'/> <br />
            <label for='ville'>Ville</label> <input type='text' name='ville' placeholder='<?php if (!empty($data['ville'])) { echo $data['ville']; } else { echo 'Nouvelle ville'; } ?>' id='ville'/> <br />
            <label for='pays'>Pays</label> 
            <select id="pays" name="pays">
                <optgroup label="A">
                    <option value="AF">Afghanistan</option>
                    <option value="ZA">Afrique du Sud</option>
                    <option value="AL">Albanie</option>
                    <option value="DZ">Algérie</option>
                    <option value="DE">Allemagne</option>
                    <option value="MK">Ancienne République yougoslave de Macédoine</option>
                    <option value="AD">Andorre</option>
                    <option value="AO">Angola</option>
                    <option value="AI">Anguilla</option>
                    <option value="AQ">Antarctique</option>
                    <option value="AG">Antigua-et-Barbuda</option>
                    <option value="AN">Antilles néerlandaises</option>
                    <option value="SA">Arabie saoudite</option>
                    <option value="AR">Argentine</option>
                    <option value="AM">Arménie</option>
                    <option value="AW">Aruba</option>
                    <option value="AU">Australie</option>
                    <option value="AT">Autriche</option>
                    <option value="AZ">Azerbaïdjan</option>
                </optgroup>
                <optgroup label="B">
                    <option value="BS">Bahamas</option>
                    <option value="BH">Bahreïn</option>
                    <option value="BD">Bangladesh</option>
                    <option value="BB">Barbade</option>
                    <option value="BE">Belgique</option>
                    <option value="BZ">Belize</option>
                    <option value="BJ">Bénin</option>
                    <option value="BM">Bermudes</option>
                    <option value="BT">Bhoutan</option>
                    <option value="BY">Biélorussie</option>
                    <option value="BO">Bolivie</option>
                    <option value="BA">Bosnie-et-Herzégovine</option>
                    <option value="BW">Botswana</option>
                    <option value="BR">Brésil</option>
                    <option value="BN">Brunei Darussalam</option>
                    <option value="BG">Bulgarie</option>
                    <option value="BF">Burkina Faso</option>
                    <option value="BI">Burundi</option>
                </optgroup>
                                                                    <!--Je vous épargne toute la liste (; -->
                <optgroup label="Y">
                    <option value="YE">Yémen</option>
                </optgroup>
                <optgroup label="Z">
                    <option value="ZM">Zambie</option>
                    <option value="ZW">Zimbabwe</option>
                </optgroup>
            </select>
            </fieldset>
            
            <input type='submit' name='modifierinformations' value='Ajouter ou modifiez vos informations' />
        </form>
        <a href="espace-membre.php"">Espace membre</a>
        
    </body>
</html>

Ce fichier 'modifierespacemembre.php' donne ceci:
Image


A partir d'ici, je rencontre quelques difficultés, lorsque l'utilisateur valide le formulaire, il est redirigé vers le fichier 'verificationmodifespacemembre.php' dans lequel je fais toutes les vérifications nécessaires et j'intègre toutes les données dans ma base de donnée SQL.

Voici verificationmodifespacemembre.php
<?php
session_start();
include ("../connect.php");

$connexion = new mysqli(SERVEUR, LOGIN, MDP, BDD); //Enlever bdd si erreur
if (!$connexion) {
    echo "LA CONNEXION AU SERVEUR MYSQL A ECHOUE\n";
    exit;
}
print "Connexion BDD reussie puis";
echo "<br />";

if (isset($_POST['pseudo']) and !empty($_POST['pseudo'])) {
    $sql = 'SELECT count(*) FROM membre WHERE pseudo="' .mysqli_real_escape_string($connexion, $_POST['pseudo']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . 'br />' . mysqli_error($connexion));
    $data = mysqli_fetch_array($req);

    if ($data[0] == 0) {
        $sql = 'UPDATE membre SET pseudo="'.mysqli_real_escape_string($connexion, $_POST['pseudo']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
        $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
        $_SESSION['identifiant'] = $_POST['pseudo'];
    }
    elseif ($data[0] == 1 and $_POST['pseudo'] == $_SESSION['identifiant']) {
        $erreur = 'Echec le pseudo n\'a pas changé';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
    }
    else {
        $erreur = 'Echec de l\'inscription !<br />Un membre possede deja cet identifiant !';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }
}

if (isset($_POST['ancienmdp']) and !empty($_POST['ancienmdp']) or isset($_POST['mdp']) and !empty($_POST['mdp']) ) {
    if (isset($_POST['ancienmdp']) and empty($_POST['mdp'])) {
        $erreur = 'Echec, vous n\'avez pas mis de nouveau mot de passe';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }
    if (empty($_POST['ancienmdp']) and isset($_POST['mdp'])) {
        $erreur = 'Echec, vous n\'avez pas rentré l\'ancien mot de passe';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }
    if ($_POST['ancienmdp'] == $_POST['mdp']) {
        $erreur = 'Echec, vous avez rentré deux fois le meme mot de passe';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }
    $sql = 'SELECT mdp FROM membre WHERE pseudo="' .mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . 'br />' . mysqli_error($connexion));
    $data = mysqli_fetch_array($req);

    if (md5($_POST['ancienmdp']) == $data['mdp'] and $data['mdp'] != md5($_POST['mdp'])) {
        $sql = 'UPDATE membre SET mdp="'.mysqli_real_escape_string($connexion, md5($_POST['mdp'])).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
        $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
    }
    else {
        $erreur = 'Echec, l\'ancien mot de passe est erroné';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }  
}


if (isset($_POST['nom']) and !empty($_POST['nom'])) {
    $sql = 'UPDATE membre SET nom="'.mysqli_real_escape_string($connexion, $_POST['nom']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}



if (isset($_POST['prenom']) and !empty($_POST['prenom'])) {
    $sql = 'UPDATE membre SET prenom="'.mysqli_real_escape_string($connexion, $_POST['prenom']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['email']) and !empty($_POST['email'])) {
    $sql = 'UPDATE membre SET email="'.mysqli_real_escape_string($connexion, $_POST['email']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['numero']) and !empty($_POST['numero'])) {
    $sql = 'UPDATE membre SET numero="'.mysqli_real_escape_string($connexion, $_POST['numero']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['adresse']) and !empty($_POST['adresse'])) {
    $sql = 'UPDATE membre SET adresse="'.mysqli_real_escape_string($connexion, $_POST['adresse']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['complementAdresse']) and !empty($_POST['complementAdresse'])) {
    $sql = 'UPDATE membre SET complementAdresse="'.mysqli_real_escape_string($connexion, $_POST['complementAdresse']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['codePostal']) and !empty($_POST['codePostal'])) {
    $sql = 'UPDATE membre SET codePostal="'.mysqli_real_escape_string($connexion,$_POST['codePostal']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}


if (isset($_POST['ville']) and !empty($_POST['ville'])) {
    $sql = 'UPDATE membre SET ville="'.mysqli_real_escape_string($connexion, $_POST['ville']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}



if (isset($_POST['pays']) and !empty($_POST['pays'])) {
    $sql = 'UPDATE membre SET pays="'.mysqli_real_escape_string($connexion, $_POST['pays']).'" WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
}

?>

C'est ici que survient mon problème, les données que je rentre dans le formulaire de 'modifierespacemembre.php' ne se mettent pas dans la base de donnée. Le code PHP semble fonctionner correctement, l'erreur a l'air de se situer dans la communication avec la base de donnée... Aucune erreur ne s'affiche, je ne sais pas trop quoi faire. J'espère que l'un d'entres vous pourra m'aider ou m'aiguiller merci a ceux qui répondrons.


Ma base de donnée
Image


Voici si besoin le fichier 'connect.php' qui est inclus dans les pages précedente, il contient les infos sur la base de donnée
<?php
   define ('SERVEUR', "localhost:3307");
   define ('LOGIN', "root");
   define ('MDP', "root");
   define ('BDD', "rucherdemontimas");
?>

Mammouth du PHP | 2703 Messages

20 janv. 2021, 23:56

il faut debuger, afficher le contenu de la variable $sql, l'exécuter dans phpmyadmin et comprendre le message d'erreur ou s'il n'y a pas de message d'erreur, comprendre pourquoi la condition WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'" ne marche que dans un cas très spécial.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2021, 16:07

Or1 devrait t'avoir mis sur le voie pour identifier l'origine de ton anomalie (tes requêtes s'exécutent bien, mais ne trouvent aucun enregistrement correspondant à tes critères de recherche pour les mettre à jour ;))

En complément :
- la fonction isSet() permet de tester l'existence d'une variable (et c'est bien de l'appeler avant d'essayer de l'utiliser). La fonction empty() permet de tester l'existence d'une variable ET de s'assurer qu'elle est vide ou égale à 0. Tu peux donc simplifier certains de tes tests en remplaçant isSet() && !empty() par !empty().
- en php, il y a une différence entre "&&" et "and" (priorité des opérateurs). Si tu ne sais pas précisément pourquoi tu utilises "and" ou "or", il vaut mieux utiliser "&&" et "||" ;)
- Tu peux mettre à jour plus d'un champ quand tu fais un update et il est préférable de ne faire qu'une seule requête qui mettra 10 champs à jours, plutôt que de faire 10 requêtes pour le même résultat. Ta requête SQL n'est rien de plus qu'une chaîne de caractères, tu peux donc concaténer différentes chaines pour constituer ta requête finale et ne l'exécuter qu'une seule fois.

Par exemple :
$majChamps = array(); // on va ajouter dans ce tableau chaque champ et sa nouvelle valeur
if (!empty($_POST['nom'])) 
   $majChamps[] = ' nom = ' . mysqli_real_escape_string($connexion, $_POST['nom']);
if (!empty($_POST['prenom'])) 
   $majChamps[] = ' prenom = ' . mysqli_real_escape_string($connexion, $_POST['prenom']);
...

if (!empty($majChamps)) { // s'il y a au moins un champ à mettre à jour
   $sql = 'UPDATE membre SET ' . implode(',', $majChamps) . ' WHERE ... '; // intègre le tableau dans la requête
   $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion)); // une seule exécution
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

21 janv. 2021, 20:24

il faut debuger, afficher le contenu de la variable $sql, l'exécuter dans phpmyadmin et comprendre le message d'erreur ou s'il n'y a pas de message d'erreur, comprendre pourquoi la condition WHERE "pseudo" = "'.mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'" ne marche que dans un cas très spécial.
Merci pour ta réactivité, ton aide m'a bien aidé ! Finalement ce sont de simples guillemets en trop, encore une erreur bête :wink: , tout fonctionne merci encore.

Petit nouveau ! | 9 Messages

21 janv. 2021, 20:29

Or1 devrait t'avoir mis sur le voie pour identifier l'origine de ton anomalie (tes requêtes s'exécutent bien, mais ne trouvent aucun enregistrement correspondant à tes critères de recherche pour les mettre à jour ;))

En complément :
- la fonction isSet() permet de tester l'existence d'une variable (et c'est bien de l'appeler avant d'essayer de l'utiliser). La fonction empty() permet de tester l'existence d'une variable ET de s'assurer qu'elle est vide ou égale à 0. Tu peux donc simplifier certains de tes tests en remplaçant isSet() && !empty() par !empty().
- en php, il y a une différence entre "&&" et "and" (priorité des opérateurs). Si tu ne sais pas précisément pourquoi tu utilises "and" ou "or", il vaut mieux utiliser "&&" et "||" ;)
- Tu peux mettre à jour plus d'un champ quand tu fais un update et il est préférable de ne faire qu'une seule requête qui mettra 10 champs à jours, plutôt que de faire 10 requêtes pour le même résultat. Ta requête SQL n'est rien de plus qu'une chaîne de caractères, tu peux donc concaténer différentes chaines pour constituer ta requête finale et ne l'exécuter qu'une seule fois.

Par exemple :
$majChamps = array(); // on va ajouter dans ce tableau chaque champ et sa nouvelle valeur
if (!empty($_POST['nom'])) 
   $majChamps[] = ' nom = ' . mysqli_real_escape_string($connexion, $_POST['nom']);
if (!empty($_POST['prenom'])) 
   $majChamps[] = ' prenom = ' . mysqli_real_escape_string($connexion, $_POST['prenom']);
...

if (!empty($majChamps)) { // s'il y a au moins un champ à mettre à jour
   $sql = 'UPDATE membre SET ' . implode(',', $majChamps) . ' WHERE ... '; // intègre le tableau dans la requête
   $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion)); // une seule exécution
}
Un grand merci !!
Tout tes conseils me sont très utiles j'ignorais effectivement pas mal de chose a propos de isset/empty et des operateurs...
Je me met dès maintenant a la restructuration de mon fichier afin d'avoir moins de requêtes, la fonction implode() est très pratique, encore merci pour ton aide je vais pouvoir m'amuser encore un peu plus :P

Petit nouveau ! | 9 Messages

21 janv. 2021, 23:13

Or1 devrait t'avoir mis sur le voie pour identifier l'origine de ton anomalie (tes requêtes s'exécutent bien, mais ne trouvent aucun enregistrement correspondant à tes critères de recherche pour les mettre à jour ;))

En complément :
- la fonction isSet() permet de tester l'existence d'une variable (et c'est bien de l'appeler avant d'essayer de l'utiliser). La fonction empty() permet de tester l'existence d'une variable ET de s'assurer qu'elle est vide ou égale à 0. Tu peux donc simplifier certains de tes tests en remplaçant isSet() && !empty() par !empty().
- en php, il y a une différence entre "&&" et "and" (priorité des opérateurs). Si tu ne sais pas précisément pourquoi tu utilises "and" ou "or", il vaut mieux utiliser "&&" et "||" ;)
- Tu peux mettre à jour plus d'un champ quand tu fais un update et il est préférable de ne faire qu'une seule requête qui mettra 10 champs à jours, plutôt que de faire 10 requêtes pour le même résultat. Ta requête SQL n'est rien de plus qu'une chaîne de caractères, tu peux donc concaténer différentes chaines pour constituer ta requête finale et ne l'exécuter qu'une seule fois.

Par exemple :
$majChamps = array(); // on va ajouter dans ce tableau chaque champ et sa nouvelle valeur
if (!empty($_POST['nom'])) 
   $majChamps[] = ' nom = ' . mysqli_real_escape_string($connexion, $_POST['nom']);
if (!empty($_POST['prenom'])) 
   $majChamps[] = ' prenom = ' . mysqli_real_escape_string($connexion, $_POST['prenom']);
...

if (!empty($majChamps)) { // s'il y a au moins un champ à mettre à jour
   $sql = 'UPDATE membre SET ' . implode(',', $majChamps) . ' WHERE ... '; // intègre le tableau dans la requête
   $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion)); // une seule exécution
}





Derniere petite question
J'ai donc refait mon fichier verificationmodifespacemembre.php, qui fonctionne très bien :
<?php
session_start();
include ("../connect.php");

$connexion = new mysqli(SERVEUR, LOGIN, MDP, BDD); //Enlever bdd si erreur
if (!$connexion) {
    echo "LA CONNEXION AU SERVEUR MYSQL A ECHOUE\n";
    exit;
}
print "Connexion BDD reussie puis";
echo "<br />";

$majChamps = array(); // on va ajouter dans ce tableau chaque champ et sa nouvelle valeur




//Début des tests
if (!empty($_POST['pseudo'])) {
    $sql = 'SELECT count(*) FROM membre WHERE pseudo="' .mysqli_real_escape_string($connexion, $_POST['pseudo']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . 'br />' . mysqli_error($connexion));
    $datapseudo = mysqli_fetch_array($req);

    if ($datapseudo[0] == 0) {
        $majChamps[] = ' pseudo = "' .mysqli_real_escape_string($connexion, $_POST['pseudo']);
        $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion));
    }
    else {
        $erreur = 'Echec de l\'inscription !<br />Un membre possede deja cet identifiant !';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }
}

if (!empty($_POST['ancienmdp']) && !empty($_POST['mdp'])) {
    $sql = 'SELECT mdp FROM membre WHERE pseudo="' .mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"';
    $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . 'br />' . mysqli_error($connexion));
    $datamdp = mysqli_fetch_array($req);

    if (md5($_POST['ancienmdp']) == $datamdp['mdp']) {
        $majChamps[] = ' mdp = "'.mysqli_real_escape_string($connexion, md5($_POST['mdp']));
    }
    else {
        $erreur = 'Echec, l\'ancien mot de passe est erroné';
        echo $erreur;
        echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
        exit();
    }  
}
elseif (!empty($_POST['ancienmdp']) && empty($_POST['mdp']) || empty($_POST['ancienmdp']) && !empty($_POST['mdp'])) {
    $erreur = 'Echec, merci de renseigner l\'ancien et le nouveau mot de passe';
    echo $erreur;
    echo "<br /><a href='modificationespacemembre.php'>Retour aux modifications</a>";
    exit();
}

if (!empty($_POST['nom'])) 
   $majChamps[] = ' nom = "' . mysqli_real_escape_string($connexion, $_POST['nom']);

if (!empty($_POST['prenom'])) 
   $majChamps[] = ' prenom = "' . mysqli_real_escape_string($connexion, $_POST['prenom']);

if (!empty($_POST['email'])) 
   $majChamps[] = ' email = "' . mysqli_real_escape_string($connexion, $_POST['email']);

if (!empty($_POST['numero'])) 
   $majChamps[] = ' numero = "' . mysqli_real_escape_string($connexion, $_POST['numero']);

if (!empty($_POST['adresse'])) 
   $majChamps[] = ' adresse = "' . mysqli_real_escape_string($connexion, $_POST['adresse']);

if (!empty($_POST['complementAdresse'])) 
   $majChamps[] = ' complementAdresse = "' . mysqli_real_escape_string($connexion, $_POST['complementAdresse']);

if (!empty($_POST['codePostal'])) 
   $majChamps[] = ' codePostal = "' . mysqli_real_escape_string($connexion, $_POST['codePostal']);

if (!empty($_POST['ville'])) 
   $majChamps[] = ' ville = "' . mysqli_real_escape_string($connexion, $_POST['ville']);

if (!empty($_POST['pays'])) 
   $majChamps[] = ' pays = "' . mysqli_real_escape_string($connexion, $_POST['pays']);
//Fin des tests



if (!empty($majChamps)) { // s'il y a au moins un champ à mettre à jour
   $sql = 'UPDATE membre SET ' . implode('",', $majChamps) . '" WHERE pseudo="' .mysqli_real_escape_string($connexion, $_SESSION['identifiant']).'"'; // intègre le tableau dans la requête
   $req = mysqli_query($connexion, $sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysqli_error($connexion)); // une seule exécution
}

if (!empty($datapseudo)) {
    if ($datapseudo[0] == 0) {
        $_SESSION['identifiant']= mysqli_real_escape_string($connexion, $_POST['pseudo']);
    }
}

header('location: espace-membre.php');

Seulement quand l'utilisateur rentre une adresse par exemple comportant une Apostrophe ou un guillemet, l'affichage du 'placeholder' dans mon fichier 'modificationespacemembre n'est pas correct, il s'arrête a l'apostrophe…

Contenu de la base de donnée
Image

Affichage de 'modificationespacemembre.php'
Image

Existe-il une fonction pour echapper les guillemets ou apostrophes et éviter mon problème ? J'ai déjà testé stripslashes(), et addslashes().

Mammouth du PHP | 2703 Messages

22 janv. 2021, 01:03


Petit nouveau ! | 9 Messages

22 janv. 2021, 17:50