8791 sujets

Développement web côté serveur, CMS

Bonjour, mon problème et simple, mais ne connaissant rien au php et Google n'ayant pu m'aider, je suis incapable de le résoudre:

J'ai un formulaire des plus basiques:

<form>
	<input type="text"/>
	<input type="submit" value="Ok"/>
</form>


Je voudrais que l'information provenant de l'input text soit transmis à l'url de cette manière:

Valeur inscrite par l'utilisateur: sériedechiffres
Valeur transmise à l'url: #sériedechiffres
Résultat final: http://www.monsite.com#sériedechiffres

Voilà, tout con, sauf que je ne parviens pas à me retrouver avec une adresse autre que celle de type:
http://www.monsite.com?propriété=sériedechiffres

Je ne pense pas que ce soit compliqué, et ce doit être facilement réalisable en php, sinon ça ne me pose pas de problème d'avoir recours au js (mais je préfère quand même en php)

Merci de votre aide
Modifié par xXjujo002Xx (14 Sep 2012 - 12:13)
Un formulaire envera forcément ses données en GET ou POST. Donc soit sous le format page.php?field=value, soit de façon transparente dans l'entête de la requête.
Il est donc impossible de renvoyer les données sous forme de hash comme tu le souhaites.

LA seule solution que je vois serait de procéder au traitement par JavaScript via l'évènement onsubmit du formulaire pour récupérer la valeur de ton champ et l'ajouter au hash l'url.

Mais le problème c'est qu'en procédant ainsi la page ne sera pas rechargée par le navigateur. Et de plus, le hash n'est jamais transmis au serveur et ne pourra donc pas être récupéré par PHP côté serveur.
Donc il faut voir ce que tu souhaites faire.
Bah écoute c'est nickel !
Je ne cherche pas à récupérer l'information ni à recharger la page donc pas de problème ! Je veux bien que tu me dise comment on fait (ou me montrer un tuto) car je m'y connais autant en js qu'en php... Smiley sweatdrop
Modifié par xXjujo002Xx (14 Sep 2012 - 12:31)
Avec un peu de jquery. Je n'ai pas essayé mais ça doit être un truc comme ça que tu veux essayer de faire.


<form id="monform" action="test.php">
	<input type="text" id="montest" />
	<input type="submit" value="Ok"/>
</form>



$('#monform').submit(function(){
monurl=$('#monform').attr('action')+'#'+$('#montest').val();
window.open(monurl, '_self');
return false;
});
Je ne comprend pas trop le js mais ça semble être ceci, par contre je n'ai pas bien compris où placer ces lignes: est-ce qu'il faut insérer le js dans test.php ? Dans la même page que le formulaire ? Si je ne veux pas qu'il y ait d'action php lors de l'envoi du formulaire, que faire ?

Merci
Modifié par xXjujo002Xx (17 Sep 2012 - 17:25)
Sinon en PHP tu peux faire ça :

Tu récupères ta série de chiffre à la validation du formulaire (donc au rechargement de la page), et tu rediriges vers l'url au bon format.

<?php

if isset($_POST['submit'])
{
    $var = 'ta série de chiffre';
    header("location:".$_SERVER['PHP_SELF']."#".$var);
}

?>

Modifié par MattBPA (17 Sep 2012 - 17:36)
Bah j'en sais rien, dans ton premier post tu veux arriver à une adresse de type http://www.monsite.com#sériedechiffres Smiley cligne

Si on reprend ton formulaire de départ :

<form id="monform" action="test.php">
	<input type="text" id="montest" />
	<input type="submit" value="Ok"/>
</form>


Je le modifie légèrement pour qu'il soit exploitable :

<form id="monform" action="test.php" method="POST">
	<input type="text" id="montest" name="montest" />
	<input type="submit" value="Ok" name="submit"/>
</form>


Ensuite sur la page test.php (qui est spécifiée dans l'action), j'écris mon code PHP

<?php

if isset($_POST['submit'])
{
    $var = $_POST['montest'];
    header("location:".$_SERVER['PHP_SELF']."#".$var);
}

?>


Ainsi, si l'utilisateur tape "Bonjour1234" dans ton champ de formulaire, puis valide, il se retrouvera sur la page test.php#Bonjour1234

Après je te conseille de formater ta chaîne avant la redirection, tu risques d'avoir quelques problèmes sinon Smiley cligne
Ah voilà, en fait faut mettre l'id de l'input, c'est ça que je voulais savoir.

Qu'entend-tu par formater ma chaîne ?

Sinon, il y a un problème, à chaque fois que la requête est envoyée, ça m'affiche:

Parse error: parse error, expecting `'('' in /Library/WebServer/Documents/island/island.php on line 3

Il s'agit de la ligne de condition:

if isset($_POST['submit'])
Modifié par xXjujo002Xx (17 Sep 2012 - 17:52)
Oui, erreur de ma part, j'ouvre deux parenthèses et n'en ferme qu'une :

if (isset($_POST['submit']))


Quand je parle de formater, je veux dire vérifier que les valeurs injectées dans le formulaire sont correctes (pas de caractères spéciaux, etc...)

Dans ce cas là, je ne pense pas que ce soit gênant, mais c'est bien de prendre l'habitude de retravailler les informations qu'un utilisateur a saisi dans un formulaire, ça évite beaucoup de problème de sécurité (notamment la faille include)
Modifié par MattBPA (17 Sep 2012 - 18:33)
Je crois que ça me dis quelque chose, un genre de truc qui vérifie que ce qui est entré dans la barre d'adresse provient bien de la page d'origine est n'a pas été inscrit directement par l'utilisateur dans la barre d'adresse. Oui, là en l'occurrence, ça ne pose aucun problème, mais je sais effectivement que c'est assez important.

Sinon ça marche nickel ! Merci beaucoup de ton aide !!