Redirection vers page et valeur [Résolu]

Signaler
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014
-
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
-
Bonjour,

J'aimerai savoir comment transférer sur une page html une valeur php

voici mon formulaire

<form action="form.php" method="POST" enctype="multipart/form-data">
<p>Répertoire du blog : <input type="text" name="blog" /></p>
<p>Avatar : <input type="file" name="avatar" /></p>
<p>Nom du Blog : <input type="text" name="titre" /></p>

<input type="submit" name="submit" value="Valider">
<input type="reset" name="reset" value="Effacer">


jusque là tout va bien ça se complique quand je fais appelle à une page html externe dans laquelle je pose une image avatar et que je dois récupérer la valeur du name "titre"

Le fichier form.php :


// là je crée le répertoire du blog
mkDir($_POST['blog']);
$rep_dest=$_POST['blog'];

// là je place une image avatar
imageJpeg($dst_img, $_POST['blog'].'/avatar.jpeg');
imageDestroy($dst_img);

//je copie le fichier dans le répertoire créé plus haut
copy ("index.html", "$rep_dest/index.html");

//je dis d'aller sur l'url du répertoire que je viens de créer avec son fichier
header('Location:'.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.html');

// là je ressort la valeur du nom du blog mais problème il devrait être dans le fichier index.html
$titre=isset($_POST["titre"])?$_POST["titre"];
echo "Le Blog: ".$titre;

Comment faire pour avoir dans ma page html Index.html ma variable $titre ? quel est le chemin ?

12 réponses

Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Bonjour,

Si tu rediriges vers une autre page..

//je dis d'aller sur l'url du répertoire que je viens de créer avec son fichier
header('Location:'.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.html');

...Tu n'est donc plus dans ta première page (celle qui contient actuellement le Echo de ton titre)... donc forcément... une fois redirigé les lignes qui se déroulent après ta redirection ne se lanceront pas........

C'est DANS ta page index.html qu'il faut que tu fasses ton ECHO.
Par contre;. pour récupérer la valeur de ton titre deux solutions :
1 - Tu sauvegardes dans ta BDD le titre (ainsi que le chemin de l'image que tu viens de créer) puis dans ta nouvelle page, tu requêtes la BDD pour récupérer les infos.

2 - (plus simple) tu passes ta variable en GET (via l'URL).

$titre=isset($_POST["titre"])?$_POST["titre"];
//je dis d'aller sur l'url du répertoire que je viens de créer avec son fichier
header('Location:'.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre);



Et dans ta page index :
$titre=isset($_GET["titre"])?$_GET["titre"];
echo $titre;



Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

J'ai choisis la seconde solution pas parce qu'elle est plus simple mais parce j'opte pour une solution avec un minimum de bdd mais ça ne marche pas le fichier html devient un fichier php et l'instruction est passé en get mais ça bloque ici
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Bonjour,
Vu que tu utilises du PHP dans tes pages... autant nommer ces pages en " .php "..c'est pour ça que lors de la copie de ton fichier... je le renomme en index.php....

Après pour le passage de variables d'une page à l'autre.. ben.. c'est toujours la même chose :
http://fr.html.net/tutorials/php/lesson10.php
http://www.commentcamarche.net/contents/793-php-recuperation-de-donnees
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

tel quel le fichier php ne passe pas

<html>
<head>
<title>TEST</title>
</head>
<body>
<?php

$titre=isset($_GET["titre"])?$_GET["titre"];
echo "Le Blog de" $titre ;

?>
</body>
</html>


Il doit y avoir un problème de parenthèse mais je ne sais pas où
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Il doit y avoir un problème de parenthèse mais je ne sais pas où
Hummm.. n'aurais tu pas un message d'erreur ??? si oui...merci de nous l'indiquer !

En attendant... tu peux déjà tester :
$titre=isset($_GET["titre"])?$_GET["titre"]:'ERREUR';
echo "Le Blog de" . $titre ;

Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

J'ai un début de réponse

avec ça le fichier php existe


<?php
if (isset($_GET['titre'])){
$titre=$_GET['titre'];
echo "Le Blog de" .$titre. "le bloggeur"; }
?>

mais dans le problème donné ça ne marche pas encore
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
mais dans le problème donné ça ne marche pas encore
C'est à dire ????
"Ca ne marche pas" .. n'est pas vraiment très clair comme explication ... non ??.!!

Peux-tu détailler ?

Par exemple : Est ce que tu as du texte qui s'affiche lorsque tu appels ta page ? Si oui.. lequel ?

Peux tu aussi nous montrer "comment" tu appelles ta page ? ( via une URL ? ... Laquelle ?? ) ?
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Voilà le problème
j'ai un formulaire en post avec une valeur name="titre" à récupérer.

Le fichier en post formu.php appelle trois choses
- d'une part
a) la création d'un répertoire mkdir
b) la copie d'un fichier index.php dans le répertoire fraichement créer
et c) la création d'un avatar avec le upload d'une image qui se copie dans le répertoire et est présent dans le fichier index.php

et puis et voilà là où ça coince
une redirection (location) vers la page copier index.php avec un appel en get, dans l'url la voici :

header('Location: '.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre=$titre');
voilà ce que fait formu.php

dans le fichier index.php qui reçoit la variable voilà l'instruction

<?php 
if (isset($_GET['titre'])){
$titre=$_GET['titre'];
echo "Le Blog de" .$titre. "le bloggeur"; }
?>
dans le fichier php il y a du html et tout s'affiche bien, le répertoire est créer, la copie s'effectue, l'avatar jpeg s'affiche bien mais la variable s'affiche mal comme ceci :

Le Blog de$titrele bloggeur

et j'y suis presque mais malgré les liens que tu as donné et les conseils, je coince presque au but
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Tu dois concatener ton url avec ta variable $titre et non juste l'ecrire dans ta chaine.... (comme tu l'as fait avec $_POST ['blog']
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

tu veux dire comme ça ?

<?php
if (isset($_GET["nom-blog"])){
$titre=$_GET["nom-blog"];
echo 'le blog' . $_GET["nom-blog"] . 'du bloggeur Marcel'; }
?>

ça donne ça

le blog$titredu bloggeur Marcel

qu'est ce que tu veux dire par concaténation, j'ai eu beau chercher je n'ai pas compris
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Dans ta première page... tu fais ta redirection de la manière suivante :
header('Location: '.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre=$titre');

As-tu remarqué ?? ... $titre n'est pas en Bleu dans la coloration syntaxique.... un peu normal.. vu que tu l'as mis directement dans ta chaine de caractères... au lieu de le concaténer avec.

Tu peux d'ailleurs vite t'en rendre compte... regardes quelle est l'URL indiquée dans ton navigateur internet lorsque tu arrives sur ta seconde page.....

Bref.. tu devrais avoir ceci :
header('Location: '.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre);




Pour ta seconde page :
<?php
 $titre=isset($_GET["titre"])? $_GET["titre"]:'error';
  echo 'le blog ' .$titre. ' du bloggeur Marcel'; 
 ?>


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

ça ne fonctionne pas

dans la barre d'adresse j'ai ça

/index.php?titre=

et ça s'arrête là

et dans la page j'ai ça :

le blog du bloggeur Marcel

J'ai essayé en changeant de place les virgule dans l'url mais là aussi ça bloque

ne serait ce pas parce que c'est une instruction : header location ?
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Avant ton header.. tu initalise $titre ??
blog-machine
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

non je n'utilise que le header
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Tu fais bien un truc du genre non ?
$titre=isset($_POST["titre"])?$_POST["titre"];
//je dis d'aller sur l'url du répertoire que je viens de créer avec son fichier
header('Location:'.'http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre);

Dans ton Header.... tu lui demande d'aller sur l'URL :
http://www.blog-machine.fr/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre


$titre etant le text que tu souhaites récupérer sur ta seconde page......
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Je crois que nous nous sommes mal compris;

dans mon fichier formu.php qui appelle mes instructions mkdir, copy et l'avatar image il y a le header et , c'est à dire :
header('Location: '.'http://www.blog-machine.net/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre);
Dans le corps html du fichier formulaire.htm il est déclaré avec :
<form action="formu.php" method="POST" enctype="multipart/form-data">
j'ai une série d'instruction en post mais rien d'autre et quand j'essaye avec ça dans le fichier :
$titre=isset($_POST["titre"])?$_POST["titre"];
ça ne marche pas, le fichier index.php dans le header ne s'affiche pas et la valeur pas renseigné
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Il faut que dans ton header ta varible $titre contienne....ton titre.
Le isset..est a mettre dans ton formu.php avant le header.
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Je continu à croire que nous ne nous sommes pas compris reprenons
j'ai un fichier formulaire.htm

<html>
<head>
<title>Page d'inscription</title>
</head>
<body>
<form action="ins.php" method="POST" enctype="multipart/form-data">
<p>Nom du blog : <input type="text" name="blog" /></p>
<p>Avatar : <input type="file" name="avatar" /></p>
<p>Nom du Blog : <input type="text" name="titre" /></p>
<input type="submit" name="submit" value="Valider">
<input type="reset" name="reset" value="Effacer">
</form>
</body>
</html>

jusqu'ici tout va bien

ensuite j'ai le fichier php appelé par le formulaire :


<?php

include('include/conf.php');
include('include/fonctions.php');
$error=false;
$errors=array();
if (isset($_POST['blog'])){
if(!preg_match('/^[0-9a-z_\-\.]{5,48}$/i', $_POST['blog'])){

$error=true;
$errors[]='Le nom du blog ne doit comporter que des caractères alphanumériques, et les caractères suivants : "_", "-", ".". Il doit aussi être composé de moins de 49 caractères, mais de 5 caractères ou plus.';
}
}else{
$error=true;
$errors[]='Vous n\'avez pas posté le nom du blog !';
}

if (is_dir($_POST['blog'])){
$error=true;
$errors[]='Le blog existe déjà !';
}
if (isset($_FILES['avatar'])){
$im=@imageCreateFromString(file_get_contents($_FILES['avatar']['tmp_name']));
if ($im===NULL){
$error=true;
$errors[]='Vous n\'avez pas posté une image valide !';
}
$x1=imagesX($im); // On récupère les dimentions de l'image
$y1=imagesY($im);
$xdest=200; // Taille d'un avatar
$ydest=200; //
$k1=$xdest/$x1;
$k2=$ydest/$y1;
$k=min($k1,$k2, 1);
(int)$x2=$k*$x1;
(int)$y2=$k*$y1;
$dst_img= ImageCreateTrueColor($x2,$y2);
ImageCopyResized($dst_img,$im,0,0,0,0,$x2,$y2,$x1,$y1);
imageDestroy($im);
}else{
$error=true;
$errors[]='Vous n\'avez pas posté d\'avatar !';
}
if ($error){
echo '<html>
<head>
<title>Erreur !</title>
</head>
<body>
<h1>Erreur lors de l\'inscription !</h1>
<p>Vous avez fait une erreur (ou plusieurs erreurs) lors de l\'inscription...</p>
<ul>';
foreach ($errors as $er)
echo '
<li>'.$er.'</li>';
echo '
</ul>
<a href="javascript:history.go(-1);">Page précédente.</a>
</body>
</html>';
}
mkDir($_POST['blog']);
$rep_dest=$_POST['blog'];
imageJpeg($dst_img, $_POST['blog'].'/avatar.jpeg');
imageDestroy($dst_img);
copy ("index.php", "$rep_dest/index.php");

$titre=isset($_POST["titre"])?$_POST["titre"];

header('Location: '.'http://www.blog-machine.fr.net/dev/blog/'.$_POST['blog'].'/index.php?titre='.$titre);
?>

et le fichier index.php qui est appelé par le header


<html>
<head>
<title>TEST</title>
</head>
<body>
<table width="100%" border="1">
<tr>
<td id="titre">TESTING</td>
<td style="text-align: center;" id="avatar" width="20%"><img src="avatar.jpeg" alt="Avatar"/></td>

</tr>
<tr>
<td id="content" colspan="3">
<hr />
<!-- //--CONTENT--// --></td>
</tr>
<tr>
<td colspan="4" id="footer">
<a href="index.html">Page d'accueil de ce blog</a> |
<a href="../">Créer un blog</a> |
<a href="admin.html">Administrer ce blog</a> |
<a href="../contact.html">Contacter le webmaster</a>
</td>
</tr>
</table>
<?php
$titre=isset($_GET["titre"])?$_GET["titre"]:'erreur';
echo 'le blog ' .$titre. ' du bloggeur Marcel';
?>
</body>
</html>


et avec cette configuration le fichier index.php ne s'affiche pas
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Bonsoir,
Le fichier index.php ne s'affiche pas ?
Il ne s'affiche pas du tout ?
- Tu as quoi dans la barre d'adresse de ton navigateur ?
- Il se passe quoi si tu saisis manuellement dans la barre d'adresse de ton navigateur l'URL correspondante à la page que tu viens de créer ?

Tu peux tester ceci et me dire ce que ça t'affiche ?
// TOUJOURS initialiser ses variables POST/GET !!
$blog = isset($_POST['blog'])?$_POST['blog']:FALSE;
echo "<br> Blog = " . $blog;

if($blog){
  mkDir($blog);
  $rep_dest=$blog;
  imageJpeg($dst_img, $blog.'/avatar.jpeg');
  imageDestroy($dst_img);

  /* Tu avais oublié de concaténer $rep_dest..
   -> copy ("index.php", "$rep_dest/index.php");
  */
  copy ("index.php", $rep_dest."/index.php");

  $titre=isset($_POST["titre"])?$_POST["titre"]:'AUCUN TITRE';
  echo "<br>Le titre est : ".$titre;

  $url = 'http://www.blog-machine.fr.net/dev/blog/'.$blog.'/index.php?titre='.$titre;
  echo "<br> L'url sera : " .$url;

/*--------------------------------------------
   Le temps du test.. on commente cette partie 
    Si l'URL affichée correspond à ce que tu devrais avoir, 
    alors tu pourras dé-commenter la ligne suivante */
  //header('Location: '.$url);

}else{

echo "<p><h1>
        blog : ne contient rien !
         </h1></p>";
}
?>


NB : Depuis le temps qu'on te le dit... n'oublies pas de vérifier avec ISSET que tes variables POST/GET existent !

NB2 : Pour savoir ce qui cloche dans un programme... la première chose à faire est d'utiliser des ECHO ( ou des PRINT_R) pour connaitre le contenu de nos variables et essayer de déterminer où ça bloque...

NB3 : Je persiste.. mais je reste persuadé que l'utilisation d'une Base de données pour réaliser ton site serait largement préférable....( Créer des pages pour chaque personnes...argghh..;je trouve ça peu fiable...peu efficace...et compliquer : A mettre en Oeuvre et à maintenir...)


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

9a va mieux comme ça, mais tu sais même si je suis lent je progresse (un peu)

en effet je vais plutôt opter pour la solution avec une base mais autant lire, relire ça va à peu près mais écrire c'est plus difficile
jordane45
Messages postés
27588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2020
323
Le tout c'est de progresser. ..peu importe à quelle vitesse. :-)

Pour les bdd..tu verras ce n'est pas si compliqué.