salut,
lit bien la doc de
htmlspecialchars et tu devrais comprendre pourquoi cela ne fonctionne pas
il est impératif d'activer les rapport d'erreur de php en développement : (dans le php.ini)
error_reporting = E_ALL
display_error = On
ta requêtes est très bien, pour une injection SQL. tu l'indique d'ailleurs en posant ta question.
Il ne faut pas utiliser les variables ainsi utilise des noms correctes ($var12 => $smtp), cela va permettre d'avoir une idée clair de ce a quoi sert la variable lorsqu'elle est rencontrée dans le script.
tu ne délimites pas les valeurs des champs par des ' => tu n'as donc que des entiers ?
vu comme sa ta requête ne peux pas fonctionner, d'ailleurs tu as mélanger les champs ce qui fait que seul raison et adresse son correct, tu l'aurais vu avec des noms parlant

.
ton code en utilisant
mysqli_real_escape_string
<?php
$conn = mysqli_connect('localhost','root','root','app');
if (mysqli_connect_errno()) {
printf('Échec de la connexion : %s\n', mysqli_connect_error());
exit();
}
$raison = real_escape_string($conn,$_POST['raison']);
$adresse = real_escape_string($conn,$_POST['adresse']);
$contact = real_escape_string($conn,$_POST['contact']);
$ville = real_escape_string($conn,$_POST['ville']);
$tel = real_escape_string($conn,$_POST['tel']);
$etage = real_escape_string($conn,$_POST['etage']);
$elec = real_escape_string($conn,$_POST['elec']);
$ether = real_escape_string($conn,$_POST['ether']);
$ip = real_escape_string($conn,$_POST['ip']);
$sel1 = real_escape_string($conn,$_POST['sel1']);
$scan = real_escape_string($conn,$_POST['scan']);
$scanmail = real_escape_string($conn,$_POST['scanmail']);
$os = real_escape_string($conn,$_POST['os']);
$nombre = real_escape_string($conn,$_POST['nombre']);
$mailfai = real_escape_string($conn,$_POST['mailfai']);
$smtp = real_escape_string($conn,$_POST['smtp']);
$req = $conn->query('INSERT INTO donnees (raison, adresse, ville, contact, tel, etage, elec, ether, ip, sel1, scan, scanmail, os, nombre, mailfai, smtp) VALUES(
\''.$raison.'\',\''.$adresse.'\',\''.$ville.'\',\''.$contact.'\',\''.$tel.'\',\''.$etage.'\',\''.$elec.'\',\''.$ether.'\',\''.$ip.'\',\''.$sel1.'\',\''.$scan.'\',
\''.$scanmail.'\',\''.$os.'\',\''.$nombre.'\',\''.$mailfai.'\',\''.$smtp.'\')');
// a commenter pour tester
header('Location: succes.php');
Il est aussi possible d'utiliser une requête préparée bien qu'ici elle soit inutile.
<?php
$conn = mysqli_connect('localhost','root','root','app');
if (mysqli_connect_errno()) {
printf('Échec de la connexion : %s\n', mysqli_connect_error());
exit();
}
$raison = real_escape_string($conn,$_POST['raison']);
$adresse = real_escape_string($conn,$_POST['adresse']);
$contact = real_escape_string($conn,$_POST['contact']);
$ville = real_escape_string($conn,$_POST['ville']);
$tel = real_escape_string($conn,$_POST['tel']);
$etage = real_escape_string($conn,$_POST['etage']);
$elec = real_escape_string($conn,$_POST['elec']);
$ether = real_escape_string($conn,$_POST['ether']);
$ip = real_escape_string($conn,$_POST['ip']);
$sel1 = real_escape_string($conn,$_POST['sel1']);
$scan = real_escape_string($conn,$_POST['scan']);
$scanmail = real_escape_string($conn,$_POST['scanmail']);
$os = real_escape_string($conn,$_POST['os']);
$nombre = real_escape_string($conn,$_POST['nombre']);
$mailfai = real_escape_string($conn,$_POST['mailfai']);
$smtp = real_escape_string($conn,$_POST['smtp']);
$req = $conn->prepare('INSERT INTO donnees (raison, adresse, ville, contact, tel, etage, elec, ether, ip, sel1, scan, scanmail, os, nombre, mailfai, smtp) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)');
mysqli_stmt_bind_param($req,'ssssssssssssssss',$raison,$adresse,$ville,$contact,$tel,$etage,$elec,$ether,$ip,$sel1,$scan,$scanmail,$os,$nombre,$mailfai,$smtp);
mysqli_stmt_execute($req);
mysqli_stmt_close($req);
La doc pour le bind
http://php.net/manual/fr/mysqli-stmt.bind-param.php
Si tu veux utiliser des requêtes préparer de façon plus simple, ou utiliser un style plus orienté objet, utilise
PDO
@+
Il en faut peu pour être heureux ......