Erreur 404 avec 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 : Erreur 404 avec formulaire ?

Re: Erreur 404 avec formulaire ?

par Azuriel » 31 mars 2012, 21:45

Bon suite a ton précédent message je vient d’essayer avec urlencode() et sa fonctionne de nouveau :D

Le header est présenter comme ça :
	header('Location: ajoutsite2.php?url='.urlencode ($url).'&cat='.$cat.'');	

Ce qui donne ajoutsite2.php?url=http%3A%2F%2Fwww.exemple.fr%2F&cat=0 et dans le formulaire de la seconde partie tous est en ordre.

Re: Erreur 404 avec formulaire ?

par xTG » 31 mars 2012, 21:05

Oui bizarre, possible qu'il faille absolument un urlencode(), du moins j'en aurai obligatoirement mis un si j'avais développé le site.
Mais tu dis qu'il fonctionnait avant donc...

Sinon le but n'est pas de recréer des test hein ? C'est juste de rajouter des affichages dans les tests déjà existants.
Juste au cas où tu m'aurais compris de travers. ;)

Re: Erreur 404 avec formulaire ?

par Azuriel » 31 mars 2012, 20:54

Bon pour les affichages tu pense que ce morceaux de code convient ?
if( $url == 'http://' ){
  echo 'Url non valide';
  }
else
{
  echo "L'url est : $url";
};
(Si je fais comme ci-dessus pour toutes les conditions c'est bon non ?)
Et une autre question : lorsque le formulaire est valider il doit rediriger sur ajoutsite2.php?url=$url&cat=$cat ce qui donne : ajoutsite2.php?url=http://www.exemple.fr&cat=1

Je viens de m'apercevoir que dans l'adresse il n'affiche même pas ajoutsite2.php juste ceci &cat=0
Bizarre non ?

Re: Erreur 404 avec formulaire ?

par xTG » 31 mars 2012, 19:36

var_dump() permet d'afficher un array de façon ordonnée. Donc tu as son résultat et il nous montre bien que les variables attendues sont présentes.

Ce qu'il faut maintenant c'est tester les conditions de ton script.
Car il y a forcement une condition qui ne fonctionne pas pour que cela engendre ce problème.
Et pour cela le mieux est de faire des affichages.

Exemple :
if( $test == 'valeur' ){
  echo 'condition1 ok';
  // code...
  if( $test2 == 0){
    echo 'condition2 ok';
    // code...
  }
}
else
{
  echo 'condition1 else';
  // code...
}

Re: Erreur 404 avec formulaire ?

par Azuriel » 31 mars 2012, 19:08

Alors je viens de me renseigner sur var_dump($_POST); car honnêtement je ne connaissez pas et je viens de l'utiliser voici ce qu'il m'affiche :

Code : Tout sélectionner

array(5) { ["url"]=> string(34) "http://infosannuaire.monforum.net/" ["Submit"]=> string(14) "Poursuivre ..." ["action"]=> string(7) "inserer" ["rech_meta_actif"]=> string(1) "1" ["cat"]=> string(1) "0" }
Mais la je doit avouer que je ne sais pas quoi en faire ? car de mon point de vue l'url est bien transmise par le formulaire donc pourquoi lorsque je valide le formulaire il m'affiche 404 ??

Pour l'instant je vais faire une pause et me renseigner d'avantage sur var_dump($_POST);, je posterai plus tard si j'ai avancer ou non.

Merci pour ton aide xTG et bonne appétit.

Re: Erreur 404 avec formulaire ?

par xTG » 31 mars 2012, 18:50

Le principe du debugage de code c'est d'afficher des variables sensibles pour voir si elles possèdent les valeurs attendues.

Tu peux faire un var_dump($_POST); pour voir toutes les valeurs reçues du formulaire.
Après l'intérêt est d'afficher des messages avec echo (contenant ou non des variables si besoin est pour vérifier leur valeur) à l'intérieur des différentes conditions pour vérifier comment le script interagie.

Re: Erreur 404 avec formulaire ?

par Azuriel » 31 mars 2012, 18:29

Bonjour et merci pour la réponse rapide xTG, je viens de faire ce que tu as dit ci-dessus par contre je ne comprend pas ceci :
faire de l'affichage de variable pour débugguer le tout
Excuse-moi mais je ne connais pas grand chose.

Ensuite je viens d’essayer le formulaire et la, le formulaire tourne en rond. car header() est en commentaire (je crois)
Après tu dit : "La variable url est vide." mais ce que je ne comprend pas c'est que ce même formulaire fonctionner avant ? Et comment la remplir cette variable ?

Excuse-moi de poser autant de question mais je n'ai pas beaucoup de notion en php :( merci de prendre le temps de répondre :wink:

Voici le code avec les modifications :
<?php  
if (isset($_POST['url'])) $url=$_POST['url']; else $url="http://";
if (isset($_POST['cat'])) $cat=$_POST['cat']; else $cat=0;
if (isset($_POST['action'])) $action=$_POST['action']; else $action="";
if (isset($_POST['rech_meta_actif'])) $rech_meta_actif=$_POST['rech_meta_actif'];  // variable incluse dans le fichier d'option
$erreur=0;

if ($action=="inserer"){
	if ($url!="http://" && $url!="http://www." && $url!="http://www." && $url!=""){ 		     	
 
			$temp_url=substr($url,strlen($url)-4, 4);
			if ($temp_url=="html" | $temp_url==".htm" | $temp_url==".php" | $temp_url=="php3" | $temp_url==".asp") ;
				else {
				 if ($url[strlen($url)-1]!='/')
				 		$url.='/';
				 }
			$tags=get_meta_tags($url);	
			if (is_array($tags)){
			 	if (isset($_REQUEST['PHPSESSID'])) session_start($_REQUEST['PHPSESSID']); else session_start(); 
			     
				if (!isset($tags["keywords"])) if (isset($tags["Keywords"])) $tags["keywords"]=$tags["Keywords"]; else $tags["keywords"]=$tags["KEYWORDS"];
				if (!isset($tags["description"])) if (isset($tags["Description"])) $tags["description"]=$tags["Description"]; else $tags["description"]=$tags["DESCRIPTION"];
				if (!isset($tags["email"])) if (isset($tags["Email"])) $tags["email"]=$tags["Email"]; else $tags["email"]=$tags["EMAIL"];

				$_SESSION['des_meta']=$tags["description"];				    
				$_SESSION['mot_meta']=$tags["keywords"];
				$_SESSION['email_meta']=$tags["email"];		
				}						
		//header("Location: ajoutsite2.php?url=$url&cat=$cat");	
		}
		else $erreur=1;
	}
$aff_titreajout=1; // Pour afficher les bonnes meta-tags // A ne pas modifier !!!
include ('inc/header.php'); 
if ($erreur==1) { echo "<br/><strong>$erreuradresse</strong>"; $val=1; }?>
<?php
if ($action!="inserer" || $val=1)
{ if ($erreur!=1) $url="http://"; ?>
<div class="title">Référencement d'un site</div>
<p>Le référencement de votre site est en deux etape, voici la première.</p>

<form name="form1" method="post" action="">
		<? echo $texturl1 ?> 
		<input type="text" name="url" size="50" value="<? echo $url ?>" />
		<input type="submit" name="Submit" value="<? echo $poursuivre ?>" /> 
		<input type="hidden" name="action" value="inserer" />
		<input type="hidden" name="rech_meta_actif" value="1" />
		<input type="hidden" name="cat" value="<? echo $cat ?>" />
</form>

<?php } ?>
<p class="center"><a href="<? echo "index.php"; ?>"><? echo $retourannu ?></a></p>
<?php include("inc/foot.php"); ?>

Re: Erreur 404 avec formulaire ?

par xTG » 31 mars 2012, 18:03

Bon déjà, le coup des short_open_tags c'est pas joli...
Il serait bon de remplacer <? par <?php

Ensuite le problème vient du header().
La variable url est vide.
Pas regardé le tout mais déjà le @ devant la fonction meta_tags() ça serait bien de l'enlever afin de voir ce qui en sort... Ainsi que l'autre qui se balade plus loin.

Enfin mettre en commentaire le header() et faire de l'affichage de variable pour débugguer le tout serait optimal pour voir où cela coince.

Erreur 404 avec formulaire ?

par Azuriel » 31 mars 2012, 17:32

Bonjour à vous, je viens de m'inscrire sur ce forum car j'ai besoins de votre aide, comme écrit dans le titre un formulaire me renvoie une erreur 404 après validation.

Voici en détail le problème :

J'utilise actuellement le script netref et j’essaye de le remettre a jour (validation w3c et quelque petit "truc") cependant hier je m'aperçois que le formulaire de soumission de site ne fonctionne plus alors qu'il n'y avait aucun problème avant ? je me suis dit que c'était peut-être une modification qui posait problème mais je ne trouve rien de suspect ?

Je me permet de poster l'url du formulaire ainsi que son code ci dessous :
Adresse du formulaire

Le code de la page :
<?  
if (isset($_POST['url'])) $url=$_POST['url']; else $url="http://";
if (isset($_POST['cat'])) $cat=$_POST['cat']; else $cat=0;
if (isset($_POST['action'])) $action=$_POST['action']; else $action="";
if (isset($_POST['rech_meta_actif'])) $rech_meta_actif=$_POST['rech_meta_actif'];  // variable incluse dans le fichier d'option
$erreur=0;

if ($action=="inserer"){
	if ($url!="http://" && $url!="http://www." && $url!="http://www." && $url!=""){ 		     	
 
			$temp_url=substr($url,strlen($url)-4, 4);
			if ($temp_url=="html" | $temp_url==".htm" | $temp_url==".php" | $temp_url=="php3" | $temp_url==".asp") ;
				else {
				 if ($url[strlen($url)-1]!='/')
				 		$url.='/';
				 }
			@$tags=get_meta_tags($url);	
			if (is_array($tags)){
			 	if (isset($_REQUEST['PHPSESSID'])) session_start($_REQUEST['PHPSESSID']); else session_start(); 
			     
				if (!isset($tags["keywords"])) if (isset($tags["Keywords"])) $tags["keywords"]=$tags["Keywords"]; else $tags["keywords"]=@$tags["KEYWORDS"];
				if (!isset($tags["description"])) if (isset($tags["Description"])) $tags["description"]=$tags["Description"]; else $tags["description"]=@$tags["DESCRIPTION"];
				if (!isset($tags["email"])) if (isset($tags["Email"])) $tags["email"]=$tags["Email"]; else $tags["email"]=@$tags["EMAIL"];

				$_SESSION['des_meta']=$tags["description"];				    
				$_SESSION['mot_meta']=$tags["keywords"];
				$_SESSION['email_meta']=$tags["email"];		
				}						
		header("Location: ajoutsite2.php?url=$url&cat=$cat");	
		}
		else $erreur=1;
	}
$aff_titreajout=1; // Pour afficher les bonnes meta-tags // A ne pas modifier !!!
include ('inc/header.php'); 
if ($erreur==1) { echo "<br/><strong>$erreuradresse</strong>"; $val=1; }?>
<?php
if ($action!="inserer" || $val=1)
{ if ($erreur!=1) $url="http://"; ?>
<div class="title">Référencement d'un site</div>
<p>Le référencement de votre site est en deux etape, voici la première.</p>

<form name="form1" method="post" action="">
		<? echo $texturl1 ?> 
		<input type="text" name="url" size="50" value="<? echo $url ?>" />
		<input type="submit" name="Submit" value="<? echo $poursuivre ?>" /> 
		<input type="hidden" name="action" value="inserer" />
		<input type="hidden" name="rech_meta_actif" value="1" />
		<input type="hidden" name="cat" value="<? echo $cat ?>" />
</form>

<? } ?>
<p class="center"><a href="<? echo "index.php"; ?>"><? echo $retourannu ?></a></p>
<? include("inc/foot.php"); ?>
Voila je crois que je n'ai rien oublier, je vous signal que je n'ai pas de grande notion en php donc si vous pouviez me donner un coup de main ou un début de piste ou chercher je vous en remercie d'avance :D

Bonne fin de journée a vous Azuriel