CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème SQL

Jigyas
Jigyas
Niveau 10
06 juin 2014 à 16:02:57

Salut,

Voilà je suis en train de faire une fiche de contact pour que l'utilisateur envoie un message a l'administrateur du site.

J'ai donc fait une basse de donnée etc.

Ma page connect.php à l'air de fonctionner mais la page chargé de mettre les valeur dans la base de donnée ne fonctionne pas.

En claire cela m'indique

Connexion réussie Echec de l'ajout article. Recommencez plus tard.
invalid data source name

Voilà ce "invalid data source name" me pose problème"

Voilà une partie de mon code:

<?php
include('connect.php');
$nom= addslashes($_POST['nom']);
$prenom = addslashes($_POST['prenom']);
$email = addslashes($_POST['email']);
$adresse = addslashes($_POST ['adresse']);
$cppostal = addslashes($_POST ['cppostal']);
$ville = addslashes($_POST ['ville']);
$pays = addslashes($_POST ['pays']);
$telephone = addslashes($_POST ['telephone']);
$message = addslashes($_POST ['message']);
try
{
$cnx = new PDO ( DSN, LOGIN, PASSWORD, $options );
$sql = "INSERT INTO Contact ( nom, prenom, email, adresse, cppostal, ville, pays, telephone, message ) VALUES ('','$nom', '$prenom', '$email', '$adresse', '$cppostal', '$ville', '$pays', '$telephone', '$message')";
$cnx->exec ($sql);
$cnx = null;
echo "Le message a bien été ajouté<br/><a href = 'contact.php'> retour </a>";
}
catch (PDOException $e)
{
die ("Echec de l'ajout article. Recommencez plus tard.<br/><a href = 'contact.php'> retour </a>".$e->getMessage());
}
?>

Si vous avez une idée dites le moi svp parce que là je galère..

Pseudo supprimé
Pseudo supprimé 06 juin 2014 à 19:13:09

Mes compétences s'arrête à MySQLI, pas PDO désolé.

Jigyas
Jigyas
Niveau 10
06 juin 2014 à 20:39:35

oui j'aurai dûe précisé dsl..

deepblue
deepblue
Niveau 16
06 juin 2014 à 21:22:24

Déjà, utilises bindValue http://www.php.net/manual/fr/pdostatement.bindvalue.php car ton addslashes sont moches et dangereux.

Par ailleurs, tu dois impérativement faire des tests pour savoir si les données que tu reçois (ou que tu penses recevoir) sont bonnes.

Je n'ai pas testé mais tu devrais te diriger vers une solution proche de celle-ci : https://wall.deblan.org/x1b31/php/0/

deepblue
deepblue
Niveau 16
06 juin 2014 à 21:23:28

Btw, je pense que l'erreur vient de ce bout de requête : "VALUES (,'$nom'", tu as un en trop.

Pseudo supprimé
Pseudo supprimé 09 juin 2014 à 21:32:27

"car ton addslashes sont moches et dangereux."

En quoi ? :noel:

deepblue
deepblue
Niveau 16
10 juin 2014 à 00:03:40

http://www.php.net/manual/fr/info.configuration.php#ini.magic-quotes-gpc

Si la magic_quotes sont déactivées :

$foo = $_GET['foo']; // ou dans $_POST, $_COOKIE, admettons "J'aime les pommes"
echo addslashes($foo); // affiche : J\'aime les pommes

Si la magic_quotes sont activées :

$foo = $_GET['foo']; // ou dans $_POST, $_COOKIE, admettons "J'aime les pommes"
echo addslashes($foo); // affiche : J\\'aime les pomme

Si on imagine ça dans une requête SQL :

$username = addslashes($_GET['foo']); // ou dans $_POST, $_COOKIE, admettons "' or 1=1 --"
// $username vaut avec mes MG à 1 : "\' or 1=1 --"
// + le addslashes : "\\' or 1=1 --", 'équivalent à : "' or 1=1 --"
$password = "peu importe la valeur";

"SELECT * FROM user WHERE login='$username' AND password='$password"
"SELECT * FROM user WHERE login='\\' or 1=1 --' AND password='peu importe la valeur"
(ou bien) "SELECT * FROM user WHERE login= or 1=1 --' AND password='peu importe la valeur"
interprétée comme : "SELECT * FROM user WHERE login=
or 1=1"

:d) injection SQL

Jigyas
Jigyas
Niveau 10
10 juin 2014 à 09:44:22

J'ai essayé vos solutions mais (peut-être que je mis prend mal) cela ne marche pas non plus.

Le truc c'est que j'ai dejà fait des ajouts dans une base de donnée lors d'autres projets, qui ont marchés. J'ai beau reprendre le même code ça ne marche pas dans ce cas là.. :(

Ca peut venir de quoi ?

Jigyas
Jigyas
Niveau 10
10 juin 2014 à 10:01:34

Bon j'ai réussie, le problème venait de mon connect.php :fete:

Mon ancien code était:

<?php
$link = mysql_connect("localhost", "nom", "mdp")
or die("Impossible de se connecter : " . mysql_error());
echo 'Connexion réussie. ';
mysql_close($link);
?>

que j'ai remplacé par :hap:

<?php
define('DSN','mysql:host=localhost;dbname=nomdelab
ase');

define('LOGIN','nom');
define('PASSWORD','mdp');
$options=array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXC
EPTION,

PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8");
?>

merci à ceux qui m'ont aidé quand même :hap:

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 20:52:06

Ah merci. Deepblue (de toute façon, j'utilise jamais cette fonction).

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment