acceder a une page en fonction dun champ - PHP - Programmation
Marsh Posté le 26-04-2005 à 11:30:12
Je pige pas. Suivant la valeur, tu fais un echo d'un élément <form> avec une action différente
Marsh Posté le 26-04-2005 à 11:33:55
oui en fonction du resultat dans name="{login_Name}"
c'est a dire la valeur entrer par lutilisateur
je souhaiterai ouvrir une page php
celle est diffenrente suivant si on entre saada ou autre chose
je sais pas si ta mieux compris
merci
Marsh Posté le 26-04-2005 à 11:50:51
jai essayer un autre truc mais sa ne marche toujours pas
cette fois ci je n'accede a aucune page
voici mon code
<?php
// la vérification doit etre faite avant tout affichage !
if ( isset($_POST['login_name']) )
{
if (preg_match("!^saada$!" , $_POST['login_name'] ))
{
header("Location: /esai.php" );
}
else
{
header("Location: /esai1.php" );
}
}
// mon formulaire
<form method="post" action="" >
<font face="Tahoma" size="2"><b>Nom</b></font>
<font face="Tahoma" size="2"><input style="FONT-FAMILY: Tahoma" name="login_name"> </font>
<input type="submit" value="validation" />
</form>
?>
merci ci vous pouviez maider
Marsh Posté le 26-04-2005 à 11:56:01
à la place de preg_match, un $_POST['login_name'] != "saada" fonctionne aussi normalement
sinon, test bien ta value de $_POST['login_name'] et place des echo dans tes if pour verifier dans quel cas il passe dans tes conditions
Marsh Posté le 26-04-2005 à 12:09:40
jai fait comme tu me la conseiler mais
mais mes echo ne marche pas
if ( isset($_POST['login_name']) )
{
if ($_POST['login_name'] == "saada" )
{
echo'c bon';
}
else
{
echo 'incorrect';
}
}
cela est du a koi??
car il ne rentre meme pas dedans
merci
Marsh Posté le 26-04-2005 à 12:12:57
Déjà le ?> est situé après le </form>, alors qu'il devrait être avant le <form>
Marsh Posté le 26-04-2005 à 12:14:52
si aucun echo ne marche, alors ton if ( isset($_POST['login_name']) ) est faux. A toi de voir pourquoi (ou alors montre nous ce qui se passe au dessus)
Marsh Posté le 26-04-2005 à 12:26:39
je pense quil y a un probleme au niveau du login_name
du
if ( isset($_POST['login_name']) )
mais je ne voi pas comment je pourai faire pour pour tester la valeur entrer dans le champs nom
<font face="Tahoma" size="2"><input style="FONT-FAMILY: Tahoma" name="{login_Name}"> </font>
merci
Marsh Posté le 26-04-2005 à 12:30:18
Bon, on va dire que ton fichier est nommé 'pouet.php'. Faudrait qu'il ressemble à ça :
<?php |
Et vire toutes ces <font> dégueulasses... C'est encore incroyable qu'en 2005 il y ait des gens qui utilisent encore ça
Marsh Posté le 26-04-2005 à 12:57:28
je ne souhaite pas que cela me telecharge un fichier !!
jeveux juste une redirection de page
en faisant ce que tu viens de me donner jaccede uniquement a la page donner dans action
et les conditions du if ne sont pas pris en compte
je suis en train dapprendre le php
afin de créer un site pour mon stage
je sui donc debutante
merci pour votre aide
Marsh Posté le 26-04-2005 à 13:50:07
miam miam1 a écrit : |
serait-il donc une femme ?? miam miam ! ;-)
reprenons :
Est-ce que ton formulaire est sur la meme page que tes if ??
verifie avec print_r($_POST) ce que tu as dans tes variables.
quel est ta verssion de php ?
Marsh Posté le 26-04-2005 à 13:58:45
miam miam1 a écrit : je ne souhaite pas que cela me telecharge un fichier !! |
C'est ce que j'ai proposé, ça redirige suivant le test
miam miam1 a écrit : en faisant ce que tu viens de me donner jaccede uniquement a la page donner dans action |
T'as pas dû tout lire. La page donnée par action est la page où tu doit mettre mon script, donc elle s'auto-appelle, et donc rentre dans le test
miam miam1 a écrit : et les conditions du if ne sont pas pris en compte |
T'as PHP d'installé au moins ?
Marsh Posté le 26-04-2005 à 14:22:24
FlorentG a écrit : Bon, on va dire que ton fichier est nommé 'pouet.php'. Faudrait qu'il ressemble à ça :
|
je ferait plutot comme ca...
<?php |
Marsh Posté le 26-04-2005 à 14:25:46
KangOl a écrit : je ferait plutot comme ca... |
en thérie, le compilo test d'abord le premier test et si il réussi et seulement si, test le second, donc, c'est la meme chose.
Marsh Posté le 26-04-2005 à 14:26:20
KangOl a écrit : je ferait plutot comme ca...
|
C'est pas bien de virer les accolades
Marsh Posté le 26-04-2005 à 14:31:03
on peut les ommettre comme ça les accolades comme à fait KangOl?
Marsh Posté le 26-04-2005 à 14:33:03
Ouais on peu. Mais moi j'aime pas. Je préfère foutre des accolades partout pour bien piger la structure. Sinon si tu regardes de loin, tu sais pas trop d'où sort l'accolade après le deuxième header Et si un jour t'as un rajout à faire, bah faudra les taper, donc autant les mettre tout de suite. Ca porte même un nom, la "full bracketed syntax"
Marsh Posté le 26-04-2005 à 14:36:37
pour ca, suffit de bien indenté le code... (vive python !!!)
Marsh Posté le 26-04-2005 à 14:37:12
KangOl a écrit : pour ca, suffit de bien indenté le code... (vive python !!!) |
C'est pas une question d'indentation, mais de convention de codage et quelques trucs en plus
Marsh Posté le 26-04-2005 à 14:40:20
FlorentG a écrit : Ca porte même un nom, la "full bracketed syntax" |
oooooh stäääyyyyÿÿÿÿÿle.
mwep, je me disais bien qu'il devait heriter ça d'un autre langage KangOl, python.
Marsh Posté le 26-04-2005 à 15:27:25
Tu ouvres de quelles manière ta page dans ton navigateur ? En double-cliquant dessus, ou en faisant : http://localhost/page.php ?
Marsh Posté le 26-04-2005 à 15:30:59
okok donc ça c'est bon... Php est-il bien installé ? Quand tu fais Affichage\source, est-ce que tu vois le code PHP ?
Marsh Posté le 26-04-2005 à 15:33:43
je voi une erreur
<br />
<b>Parse error</b>: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in <b>c:\program files\easyphp1-8\www\testmoi\esai2.php</b> on line <b>11</b><br />
Marsh Posté le 26-04-2005 à 15:39:12
sinon jai un warning
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\testmoi\esai2.php:3) in c:\program files\easyphp1-8\www\testmoi\esai2.php on line 12
mais alors la je pige pas
Marsh Posté le 26-04-2005 à 15:54:57
Parce qu'il y a déjà des trucs avant l'appelle de header. Il ne faut rien du tout (pas de echo, pas d'html, rien)
Marsh Posté le 26-04-2005 à 15:55:21
Erreur classique avec les headers, il ne faut pas que du contenu soit déjà envoyé sur la page pour pouvoir appeler header.
Marsh Posté le 26-04-2005 à 15:57:21
Sinon ce que tu fais, tu mets ton code PHP dans un autre fichier qui fait juste les traitements et qui redirige ensuite.
Marsh Posté le 26-04-2005 à 16:01:08
a part sa jai rien dautre
jai pas de echo ou autre
<?php
if(isset($_POST['login_name']))
{
if($_POST['login_name'] == 'saada')
header('Location: /esai.php');
else
header('Location: /esai1.php');
}
?>
Marsh Posté le 27-04-2005 à 09:35:08
tu peux rexpliquer ce qui doit se passer exactement lorsque l'on va sur
http://127.0.0.1/testmoi/esai2.php ??
Car je crois que y'a un truc que j'ai pas piger.
si j'ai bien compris, lorsque l'on va sur cette page, un formulaire apparait. on tape qqchose et donc on recharge la meme page qui elle meme redirige ailleurs, c'est ca ?
pour le prob de header, le debut du fichier doit etre <?php
meme pas un espace, pas une tabultation, rien avant.
Si tu as rien dans $_POST c'est que tu n'as rien poster. essai un GET, c'est pareil sauf que ca met les champs dans l'url et que tu les recupere dans $_GET
Marsh Posté le 27-04-2005 à 09:40:30
je viens d'essayer ta page, et chez moi, cela fonctionne
par contre, je ne metterais pas __FILE__ parce que c'est une macro d'un chemin complet. par exemple chez moi, __FILE__ vaut "/amd/home/soda/norky/www/test.cgi"
alors, qu'il devrait plutot valoir /test.cgi
A+
Marsh Posté le 27-04-2005 à 09:46:29
oui c bien sa
elle nous redirige vers une nouvelle page
jevais essayer avec get
merci
Marsh Posté le 27-04-2005 à 09:52:12
en faite ce que je doit faire c
me connecter a ma base sql server
et utiliser les informations sur le nom qui est dans ma base
afin de valider ou non la connection
jai essayer ce bout de code masi sa ne marche pas
<?
// parametre perso
$dsn="sqlserver";
$username="sa";
$password="pwd";
//connection
$sqlconnect=odbc_connect($dsn,$username,$password);
$sqlquery="SELECT nom FROM utilisateur;";
$process=odbc_exec($sqlconnect, $sqlquery);
// recuperation des infos
$result = false;
while(odbc_fetch_row($process))
{
$nom= odbc_result($process,"nom" );
if($_GET['login_name'] == $nom)
{
$result = true;
elseif(isset($_GET['login_name']!= $nom))
{
$result = false;
}
}
}
if ($result == true)
{
Header("Location: http://127.0.0.1/testmoi/essai3.html" );
echo ' connection effectuer avec succes';
exit;
}
odbc_close($sqlconnect);
?>
ilme dis quil y a une erreur sur le elseif masi pourquoi??
merci
Marsh Posté le 26-04-2005 à 11:28:41
bonjour a tous
jai un petit soucis
jai un champ "nom" qui est demander
si on met saada je voudrai aller a la page esai.php
sinon aller a la page esai1.php
pour mieux comprend je vous donne mon code qui ne marche pas
// jesaye de tester si saada a ete entrer pour le nom
<?php
if (preg_match("!saada!" ,"$_POST['{login_Name}']" ))
{
echo '<form method="post" action="esai.php">';
}
elseif(!preg_match("!saada!" ,"$_POST['{login_Name}']" ))
{
echo'<form method="post" action="esai1.php">';
}
?>
<form method="post" action="esai.php" >
// facon dont est rempli mon champ nom
<tr>
<font face="Tahoma" size="2"><b>Nom</b></font>
<font face="Tahoma" size="2"><input style="FONT-FAMILY: Tahoma" name="{login_Name}"> </font>
</tr>
<input type="submit" value="validation" />
</form>
merci pour votre aide