[SQL+PHP] Vérifier base de donnée et formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [SQL+PHP] Vérifier base de donnée et formulaire

par agité » 06 mai 2006, 22:31

Non je n'avais pas fait attention a cette remarque Cyrano, j'ai fais la modification et tout semble marcher correctement, un gros merci encore une fois.

Je met la balise resolu.

par Cyrano » 06 mai 2006, 22:26

tu as essayé de modifier le contenu de ton header "From" en précisant une adresse de retour, du style:
$headers = "From: Administrateur<[email protected]>\r\n";
:?:

par agité » 06 mai 2006, 22:24

J'ai essayer avec le code que tu m'as donné mais rien de plus, toujours la même erreur 501 qui reviens.

il m'indique bien que c'est un problème d'adresse donc ca doit venir de php.ini ou alors le server que je choisis n'est pas bon ?

par Cyrano » 06 mai 2006, 22:22

Quel est le résultat de la modification que j'ai suggéré plus tôt ?

par agité » 06 mai 2006, 22:12

Je n'ai pas de client de courriel et j'aie pas envie d'en installer un jeu gère tout par yahoo mail ...

Donc je peux refermer le port 25 ca ne changera rien.

Quelqu'un a déjà eut le soucis ?

par Cyrano » 06 mai 2006, 22:10

bon, tu as mal saisi l'histoire du port 25 et du serveur SMTP :

Il n'y a pas de serveur SMTP sur ta machine : le port 25 dans ton cas n'est pas un port qui doit s'ouvrir sur ta machine mais sur la machine où est installé le serveur SMTP, en l'occurence le serveur de free.fr.

En mettant "smtp = "smtp.free.fr" dans ton php.ini, la fonction mail va alors utiliser une connexion au serveur de free.fr pour expédier ton courriel. L'erreur 501 pose problème et je comprends mal le pourquoi de ça. Si ton fournisseur est bien free.fr, ça devrait fonctionner normalement : est-ce que ton client de courriel habituel fonctionne correctement ? (Thunderbird ou Outlook ?)

par agité » 06 mai 2006, 20:21

Oui je peux aussi mettre une erreur de mail mais je ne desire pas la garder par la suite si le code est bien fait il ne devrait pas avoir ce genre de retour.

Donc pour l'instant je chercher a comprendre cette erreur 501 que je ne comprends pas.

J'ai bien reverifier au niveau du routeur le port 25 en TCP est bien redirigé sur ma machine...

Je bloque un peu sur cette fonction mail()

par Cyrano » 06 mai 2006, 20:15

À première vue, je ne vois pas d'erreur flagrante, j'ai quand même un doute sur ton header "From:" sans adresse de retour :-k

Sinon, il mauqerait un test d'erreur et une simplification:
<?php
require ("connect.php");

$pseudo    = $_POST['pseudo'];
$password  = $_POST['password'];
$password2 = $_POST['password2'];
$email     = $_POST['email'];
$email2    = $_POST['email2'];

$ress   = mysql_query("SELECT * FROM `art` WHERE nom='". $pseudo ."' or email='". $email ."' ");
$existe = mysql_num_rows($ress);
$chaine_hachee = md5($_POST['pseudo'].$_POST['password'].$_POST['email']);

//On vérifie si les champs son vide
if($pseudo != "" && $password != "" && $password2 != "" && $email != "" && $email2 != "" && $pseudo != " " && $password != " " && $password2 != " " && $email != " " && $email2 != " ")
{
    //On vérifie que les mot de passe et email sont bien recopiés
    if($password == $password2 && $email == $email2)
    {
        //On vérifie que l'email ou le pseudo n'est pas enregistré
        if(!$existe)
        {
            $sql    = "INSERT INTO art (nom,mdp,email) VALUES ('".$pseudo."','".$password."','".$email."')";
            $test   = mysql_query($sql) or die("erreur ! ".mysql_error());
            $id     = mysql_insert_id();
            $titre    = "Inscription au generateur de son";
            $headers  ="From: Admin : Generateur de son !\n";
            $message  = "Bienvenue !";
            $message .= "Votre nom est : ". $pseudo ." ";
            $message .= "Votre pass est : ".$password." ";

            $message .= "pour vous connecter sur le site et acceder a votre profil vous devez d'abord cliquer sur le lien suivant : ";
            $message .= "http://localhost/ketalombre/inscrip.php?pseudo=". $pseudo ."&cle=". $chaine_hachee;

            if(mail($email, $titre, $message, $headers))
            {
                echo "<br>Votre nom a été ajouté a la base de donnée";
            }
            else
            {
                //..... renvoi vers message d'erreur approprié : la fonction mail a échoué
            }
        }
        else
        {
            header("location: inscription.php?erreur3");
        }
    }
    else
    {
        header("location: inscription.php?erreur2");
    }
}
else
{
    header("location: inscription.php?erreur1");
}
?>

par agité » 06 mai 2006, 19:48

Voila ce qui précède quand au server je l'ai verrifier c'est bien smtp.free.fr
<?php

require ("connect.php");

$pseudo=$_POST['pseudo'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];
$email2=$_POST['email2'];

$ress=mysql_query("SELECT * FROM `art` WHERE nom='$pseudo' or email='$email' ");
$existe=mysql_num_rows($ress);
$chaine_hachee = md5($_POST['pseudo'].$_POST['password'].$_POST['email']);



//On verrifie si les champs son vide
if($pseudo!="" && $password!="" && $password2!="" && $email!="" && $email2!="" && $pseudo!=" " && $password!=" " && $password2!=" " && $email!=" " && 

$email2!=" ")
{

		//On verrifie que les mot de passe et email sont bien recopiés
		if($password==$password2 && $email==$email2)
	
		{
			//On verrifie que l'email ou le pseudo n'est pas enregistré
			if(!$existe)
				{
				$sql = "INSERT INTO art (nom,mdp,email) VALUES ('".$pseudo."','".$password."','".$email."')";
				$test = mysql_query($sql) or die("erreur ! ".mysql_error());
				$id = mysql_insert_id();
					$adresse = $email;
					$titre = "Inscription au generateur de son";
					$headers="From: Admin : Generateur de son !\n";
					$message = "Bienvenue !

Votre nom est : ".$pseudo."
Votre pass est : ".$password."

pour vous connecter sur le site et acceder a votre profil vous devez d'abord cliquer sur le lien suivant :
http://localhost/ketalombre/inscrip.php?pseudo=".$pseudo."&cle=".$chaine_hachee;

				mail($adresse,$titre,$message,$headers);
				echo "<br>Votre nom a été ajouté a la base de donnée";

				}else{
					header("location: inscription.php?erreur3");
					}
		}else{
			header("location: inscription.php?erreur2");
			}

}else{
	header("location: inscription.php?erreur1");
	}


?>

par Cyrano » 06 mai 2006, 19:46

Les erreurs :
Erreur 400 Bad Request
la requête est mal formulée.

Erreur 401 Unauthorized
le client ne possède les autorisations d'accès requises.

Erreur 403 Forbidden
la requête est interdite.

Erreur 404 Not Found
l'adresse spécifiée est invalide.

Erreur 500 Internal Error
le serveur n'a pas pu traiter correctement la requête.

Erreur 501 Not Implemented
le serveur ne supporte pas le type de service ou de protocole appelé.

Erreur 503 Gatewa
y Timeout
la réponse du serveur s'est fait trop attendre.
Le problème vient peut-être du numéro du port. Vérifie dans ta configuration de client de courriel au cas où, tu trouveras l'information exacte.

Sinon, ça vient peut-être de ton code d'envoi de courriel, mais il faudrait qu'on en voie un peu plus dans ce qui précède l'appel de la fonction mail().

par Invité » 06 mai 2006, 19:25

Ah non et ce n'etait pas une mauvaise idée ca me change maintenant le nom du message en :
Warning: mail() [function.mail]: SMTP server response: 501 Bad address syntax in C:\www\verifinscription.php on line 42
donc si je comprends bien le server SMTP me dis qu'il ya une erreur de synthaxe dans le nom a la ligne 42 qui est :
mail($adresse,$titre,$message,$headers);

par Cyrano » 06 mai 2006, 18:12

As-tu redémarré le serveur Apache après modification ?

par Invité » 06 mai 2006, 18:11

j'ai tester en mettant :

Code : Tout sélectionner

[mail function] ; For Win32 only. smtp_port = 25 SMTP = "smtp.free.fr"
Toujours rien j'ai le message suivant :
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\www\verifinscription.php on line 42

par Cyrano » 06 mai 2006, 08:39

Dans ton php.ini, cherches ces lignes et adaptes par rapport à tes propres paramètres :

Code : Tout sélectionner

[mail function] ; For Win32 only. SMTP = "smtp.wanadoo.fr" smtp_port = 25
Ceci est ma propre configuration et je n'ai pas touché à la configuration de mon routeur : tout ça fonctionne très bien.

par agité » 06 mai 2006, 08:35

Merci pour le conseil je vais essayer ca dès ce soir ;)

En fait j'avais ouvert le port de mon routeur et je ne comprenais pas d'ou venais l'erreur. :oops: