Code : Tout sélectionner
<input type="image" src="images/index_17.gif" id="valider" name="connexion" value="Connexion" />Http://www.buypackplus.com/site.php
Bonne journée
Code : Tout sélectionner
<input type="image" src="images/index_17.gif" id="valider" name="connexion" value="Connexion" />
essaiesBonjour , mon probleme est le suivant : j'utilise une image qui me sert de boutton VALIDER sur mon formulaire pour se connecter a mon site web. Mon code du boutton est le suivantAvec FifeFox , Toute mon design est correct et mon boutton fonctionne , mais quand je visite mon site avec Explorer , Mon design est cassé et le boutton ne fonctionne pas !!Code : Tout sélectionner
<input type="image" src="images/index_17.gif" id="valider" name="connexion" value="Connexion" />
Http://www.buypackplus.com/site.php
Bonne journée
Code : Tout sélectionner
<input type="image" src="images/index_17.gif" id="valider" name="connexion" value="submit" />Code : Tout sélectionner
<input type="submit" style="background-image:url(images/index_17.gif);border:0" id="valider" name="connexion" value="Connexion" />
<pre>
<?php var_dump($_POST); ?>
</pre>
Oui, je ne parlais qu'au niveau fonctionnel. Je pensais que Poinball voulait récupérer la valeur de son input type = "image" ce qui fonctionne effectivement avec FF mais pas avec IE, ce qui expliquerait son pb de fonctionnement.Le design est cassé ne vient pas du type de input mais plutôt d'un souci css je pense.
...
Code : Tout sélectionner
<input type="submit" style="background-image:url(images/index_17.gif);border:0" id="valider" name="connexion" value="Connexion" /><?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 ('localhost', '*****', '*****');
mysql_select_db ('poinball_buypackplus', $base);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM utilisateurs WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_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: utilisateurs.php');
exit();
}
// si on ne trouve aucune réponse, le visiteru s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Login ou Passe incorrect.';
}
// 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.';
}
}
?>
C'est fait ?En ce qui concerne le faite que le bouton ne valide rien sous IE affiche le contenu de $_POST après validation pour relever les variables reçues.<pre> <?php var_dump($_POST); ?> </pre>
Code : Tout sélectionner
<input type="image" src="images/index_17.gif" id="valider" name="connex" value="" />
<input type="hidden" name="connexion" value="Connexion" />Code : Tout sélectionner
<input type="submit" style="background-image:url(images/index_17.gif);border:0" id="valider" name="connex" value="" />
<input type="hidden" name="connexion" value="Connexion" />if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
$base = mysql_connect ('localhost', '*****', '*****');
mysql_select_db ('poinball_buypackplus', $base);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM utilisateurs WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_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: utilisateurs.php');
exit();
}
// si on ne trouve aucune réponse, le visiteru s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Login ou Passe incorrect.';
}
// 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.';
}
Par rapport à ton code initial, la première condition n'est pas nécessaire// quand vous testez vos $_POST ou plus généralement vos tableaux
// je vois souvent:
if (isset($_POST['login']) && !empty($_POST['login']))
{
...
}
// alors qu'il suffit d'écrire:
if (!empty($_POST['login']))
{
...
}
C'est plus léger à écrire, plus facile à lire et plus rapide à executer...a+Extrait de la Doc PHP
empty() est l'opposé de (boolean) var, excepté le fait qu'aucune alerte n'est générée lorsqu'une variable n'est pas définie.
if (!empty($_POST['login']) && !empty($_POST['pass'])) {
...
...
$login = (get_magic_quotes_gpc()) ? strippslashes($_POST['login']) : $_POST['login'];
$pass = (get_magic_quotes_gpc()) ? strippslashes($_POST['pass']) : $_POST['pass'];
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM utilisateurs WHERE login="'.mysql_real_escape_string($login).'" AND pass_md5="'.md5($pass).'"';
...
Voilà Poinball. Si t'as pigé tout ça en plus de la correction de ton bug initial, t'auras déjà pas mal avancé pour aujourd'hui C'est l'inverse qu'il faut faire pour le magic_quote, s'il est sur [on] on vire les slashes, qui seront rajoutés correctement par mysql_real_escape_string.if (!empty($_POST['login']) && !empty($_POST['pass'])) { ... ... $login = (!get_magic_quotes_gpc()) ? addslashes($_POST['login']) : $_POST['login']; $pass = (!get_magic_quotes_gpc()) ? addslashes($_POST['pass']) : $_POST['pass']; // on teste si une entrée de la base contient ce couple login / pass $sql = 'SELECT count(*) FROM utilisateurs WHERE login="'.mysql_real_escape_string($login).'" AND pass_md5="'.md5($pass).'"'; ...
Oups... heureusement que t'es repassé par là... C'était ma vieille habitude avant d'utiliser mysql_real_escape_string et j'ai copié ces lignes d'un ancien code car j'avais la flemme de les taper.C'est l'inverse qu'il faut faire pour le magic_quote, s'il est sur [on] on vire les slashes, qui seront rajoutés correctement par mysql_real_escape_string.if (!empty($_POST['login']) && !empty($_POST['pass'])) { ... ... $login = (!get_magic_quotes_gpc()) ? addslashes($_POST['login']) : $_POST['login']; $pass = (!get_magic_quotes_gpc()) ? addslashes($_POST['pass']) : $_POST['pass']; // on teste si une entrée de la base contient ce couple login / pass $sql = 'SELECT count(*) FROM utilisateurs WHERE login="'.mysql_real_escape_string($login).'" AND pass_md5="'.md5($pass).'"'; ...
Sinon tu enregistres les caractères d'échappement dans la base