Rechercher : dans
Par :

Erreur PHP

Dernière réponse le 24 jun 2008 à 11:57:05 smoutsmout, le 20 jun 2008 à 10:58:51 
 Signaler ce message aux modérateurs

Bonjour,

Je developpe un site internet.
J'ai fait un formulaire d'identification en php, celui-ci recupere les variables mot de pass et login.
Quand je valide le formulaire j'utilise une page "ValidationIdentification.php" qui verifie si tout est correct.
C'est la que j'ai un probleme, j'ai l'erreur suivante :

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\nautiscaphe\validationidentification.php:4) in c:\program files\easyphp1-8\www\nautiscaphe\validationidentification.php on line 17

et le code de la page de validation est :

<?php
session_start();?>

<?
function testSaisie($login, $motpasse)
{
if (empty($login) or empty($motpasse))
return "pasOK";
}


$login= $_REQUEST["login"];
$motpasse = $_REQUEST["motpasse"];

if (testSaisie($login, $motpasse)=="pasOK")
{

#####################################################
ci-dessous la ligne 17 qui pose probleme :
header("location:ErreurIdentification2.php");
exit();
}

include("connexion.php");
$sql = "SELECT login, mdp FROM admin WHERE login='$login'";
$result = mysql_query($sql);
$ligne = mysql_fetch_array($result);
if ($ligne['mdp'] != $motpasse)
{
header("location:ErreurIdentification.php");
exit();
}
else
{

$_SESSION['login']=$login;
header ("Location: liste_news.php");
exit;
}
?>

Je ne sais pas si ca a de l'importance mais la page "ErreurIdentification2.php" contient un include qui appelle une feuille de style contenant la mise en page html.

merci d'avance pour votre aide.

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « erreur PHP » dans :
Cacher les erreurs en PHP VoirRappelons avant toute chose, qu'il est toujours préférable, dans n'importe quel langage de programmation, de corriger les problèmes qui déclenchent les erreurs, avant d'essayer de masquer les erreurs. En effet, le fait de masquer les erreurs...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

Taxiarque, le 20 jun 2008 à 11:13:00

Coucou Smoutsmout,

essayes de mettre de simple quote dans le header ça pourrait venir de là:

header('location:./ErreurIdentification2.php'); 


Bon courage ^^

PS: n'oublies les () à ton troisième exit

Répondre à Taxiarque

2

smoutsmout, le 20 jun 2008 à 11:17:39

Merci de ta reponse mais ...

raté, ca marche pas. Meme erreur au meme endroit.

Répondre à smoutsmout

3

Sri Lumpa, le 20 jun 2008 à 12:47:52

Je pense que c'est simplement du au fait que lorsqu'il essaye de charger et définir le header de ta ligne 17, il se rend compte que tu en as déjà chargé un à la ligne 4 de ton script ValidationIdentification.php. Comme tu ne peux pas avoir deux headers pour une meme page HTML, il rale.

Répondre à Sri Lumpa

4

smoutsmout, le 23 jun 2008 à 09:40:59

Ok

bon j'ai chengé le code et maitenant il me dit

Method Not Allowed
The requested method POST is not allowed for the URL

dans mon formulaire j'ai : <form action="ValidationIdentification.html" method="post" name="identification">

une solution ?

merci d'avance.

Répondre à smoutsmout

17

macgawel, le 24 jun 2008 à 10:00:07

Bonjour.

Le message Method Not Allowed , tu l'as quand tu testes en local, ou seulement sur le serveur web ?

Parce que ça ressemble fortement à un paramètrage du serveur, ça...

Répondre à macgawel

5

Taxiarque, le 23 jun 2008 à 09:54:05

Vi, il te faut mettre "post" en majuscules

Répondre à Taxiarque

6

smoutsmout, le 23 jun 2008 à 09:57:11

J'ai mis post en majuscules, eh ben ca change rien. je comprend pas la.

Répondre à smoutsmout

7

Taxiarque, le 23 jun 2008 à 10:11:47

Huuumm, tu veux faire passer tes variables par l'URL?
Si c'est le cas, c'est la méthode GET.

Répondre à Taxiarque

8

smoutsmout, le 23 jun 2008 à 10:19:59

Beh je sais pas, je veux juste qu'elles passent mes variables.

por la methode get je change post en get dans mon formulaire, et quoi d'autre, dans la page de validation (c'est le code donnée un peu plus haut) je dois faire quoi ?

Répondre à smoutsmout

9

Taxiarque, le 23 jun 2008 à 10:21:53

Sinon mets l'extension de ta page en php au lieu de html

Répondre à Taxiarque

10

smoutsmout, le 23 jun 2008 à 10:27:31

J'ai déjà essayé mais ca a m'air pire.

parce que je revient au probleme de mon premier message avec l'erreur ligne 17.

Répondre à smoutsmout

11

Taxiarque, le 23 jun 2008 à 10:29:22

Tu peux me montrer le script de ton form s'il te plait?

Répondre à Taxiarque

12

smoutsmout, le 23 jun 2008 à 10:33:59

Oui biensur :

<? include("connexion.php"); ?>

<? $titre="identification";
include("_top.php");
?>
<div align="center">
<h2>Identification</h2>

<form action="ValidationIdentification.php" name="identification" method="POST">
<table>
<tr>
<td>Nom d'utilisateur :</td>

<td>
<input type="text" name="login" size="15" maxlength="25">
</td>
</tr>
<tr>
<td>Mot de passe :</td>

<td>
<input type="password" name="motpasse" size="6" maxlength="6">
</td>
</tr>
</table>

<input type="submit" name="validation" value="Valider">

</form>

</div>
<?
include("_btm.php");
?>

Répondre à smoutsmout

13

Taxiarque, le 23 jun 2008 à 10:51:51

Est-ce que la page "ValidationIdentification.php" existe-t-elle?

Répondre à Taxiarque

14

smoutsmout, le 23 jun 2008 à 11:24:05

Oui et elle est dasn le meme repertoire que le formulaire.

Répondre à smoutsmout

15

Taxiarque, le 23 jun 2008 à 11:51:35

C'est bizarre, chez moi ça fonctionne.
Vérifie bien les majuscules et orthographe de ta page.
Fais le test sinon avec une autre page de redirection.

Répondre à Taxiarque

16

smoutsmout, le 24 jun 2008 à 09:32:50

Bizar en effet.

Je ne comprend vraiment pas pourquoi ca ne marche pas chez moi.

Je vais essayer de faire autrement meme si je ne vois pas comment.

Merci quand meme.

Répondre à smoutsmout

18

StresS, le 24 jun 2008 à 10:13:08
  • +1

Le session_start(); doit etre AVANT toute les balises de TES pages

Répondre à StresS

19

smoutsmout, le 24 jun 2008 à 10:32:39

Je doit mettre session_start() dans toutes mes pages ?

Répondre à smoutsmout

20

smoutsmout, le 24 jun 2008 à 10:36:34

J'ai trouvé ma connerie :

c'était tout con :

il falait mettre

$motpasse = $_REQUEST["motpasse"];

au lieu de

$motpasse = $_REQUEST["mdp"];

ca marche

désolée pour le dérangement

et merci.

Répondre à smoutsmout

21

blue-project, le 24 jun 2008 à 10:45:18

Seulement tu tu a besoin d'utiliser des variable de session, vu qu'elle sont sauvegarder entre les page.

<form action="ValidationIdentification.php" name="identification" method="POST"> 
<table> 
<tr> 
   <td>Nom d'utilisateur :</td> 
   <td><input type="text" name="login" size="15" maxlength="25"></td> 
</tr> 
<tr> 
   <td>Mot de passe :</td> 
   <td><input type="password" name="motpasse" size="6" maxlength="6"></td> 
</tr> 
</table> 
   <input type="submit" name="validation" value="Valider"> 
</form> 


Ce formulaire est bon.

<?php session_start(); ?> 

<?php 
function testSaisie($login, $motpasse){ 
   if (empty($login) or empty($motpasse)) 
      return "pasOK"; 
      autant utiliser un boolean?
} 

$login= $_POST["login"]; // récuppère les champs en post vu que tu les envoi en post
$motpasse = $_POST["motpasse"]; 

if (testSaisie($login, $motpasse)=="pasOK") { // Je laisse comme sa mais avec des boolean on supprime le '=='
   header("location:ErreurIdentification2.php"); 
}else{
   include("connexion.php"); 
   $sql = "SELECT login, mdp FROM admin WHERE login='$login'"; 
   $result = mysql_query($sql); 
   $ligne = mysql_fetch_array($result); 
   if ($ligne['mdp'] != $motpasse){ 
      header("location:ErreurIdentification.php"); 
   } else{ 
      $_SESSION['login']=$login; 
      header ("Location: liste_news.php"); 
   }
} 
?> 

Répondre à blue-project

22

 smoutsmout, le 24 jun 2008 à 11:57:05

Je comprend pas pourquoi ?

ca marche comme j'ai fait.

Répondre à smoutsmout
Collection CommentÇaMarche.net