Page 1 sur 2

PHP et ouverture automatique d'une page...

Posté : 01 janv. 2007, 19:15
par Grenouille32
Salut à vous autres,

Encore besoin de vos lumières...
Après vérification d'un mot de passe dans une page .php, j'aimerai que le système ouvre automatiquement la page suivante si le mot de passe est OK.

Connetriez-vous une fonction qui permette d'ouvrir de la sorte une page externe :
if ($loginOK) ...

Posté : 01 janv. 2007, 19:18
par Ajoloca
Bonjour,
header('Location: ta_page.php');

Réponse

Posté : 01 janv. 2007, 19:28
par Grenouille32
header('Locatio: ta_page.php');
J'avais déjà essayé cette fonction header('Location: index.php');
mais j'obtiens un message d'erreur. Je crois que cette fonction est réservée aux pages html, à mettre dans l'entête ???

Posté : 01 janv. 2007, 19:29
par Ajoloca
Sans le message d'erreur, on ne peut pas faire grande chose.

Posté : 01 janv. 2007, 19:32
par Grenouille32
Sans le message d'erreur, on ne peut pas faire grande chose.
Warning: Cannot modify header information - headers already sent by (output stated at -adresse-base.php:8)/mnt)114/free.fr ... veriflogin.php on line 60.

Posté : 01 janv. 2007, 19:36
par Ajoloca
C'est parce que les entêtes on déjà été envoyées.

Rien ne doit être envoyé au navigateur avant cette ligne, même pas un espace.

Posté : 01 janv. 2007, 19:49
par Grenouille32
Désolé, je ne vois pas ce qui pourrait être envoyé !!!
if ($loginOK) {
  $_SESSION['nom'] = $data['nom'];
  $_SESSION['adresse'] = $data['adresse'];
  $_SESSION['cp'] = $data['cp'];
  $_SESSION['ville'] = $data['ville'];
  $_SESSION['telephone1'] = $data['telephone1'];
  $_SESSION['portable'] = $data['portable'];
  $_SESSION['fax'] = $data['fax'];    
header('Location: index.php');  
}

Posté : 01 janv. 2007, 19:51
par Ajoloca
Montre-nous le code de toute la page et mets-le entre les balises [ php] et [/php]

C'est un peu long !

Posté : 01 janv. 2007, 19:53
par Grenouille32
<?php
$loginOK = false; 

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {

  extract($_POST);  // je vous renvoie à la doc de cette fonction

  // On va chercher le mot de passe afférent à ce login
  $sql = "SELECT  login, mot_de_passe, nom, adresse, cp, ville, telephone1, portable, fax, mail FROM table1 WHERE login = '".addslashes($login)."'";
  $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);

  // On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
   
    // On vérifie que son mot de passe est correct
    if ($password == $data['mot_de_passe']) {
      $loginOK = true;
    }
  }
}

// Si le login a été validé on met les données en sessions
if ($loginOK) {
  $_SESSION['nom'] = $data['nom'];
  $_SESSION['adresse'] = $data['adresse'];
  $_SESSION['cp'] = $data['cp'];
  $_SESSION['ville'] = $data['ville'];
  $_SESSION['telephone1'] = $data['telephone1'];
  $_SESSION['portable'] = $data['portable'];
  $_SESSION['fax'] = $data['fax'];    
header('Location: index.php');     
echo "Tout est OK"  ;
}
else {
  echo 'Une erreur est survenue, veuillez réessayer !';
}
?>

Posté : 01 janv. 2007, 20:00
par Ajoloca
Ce code devrait fonctionner à condition que <?php soit la première ligne du fichier.
<?php
	session_start();
	$loginOK = false;
	if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
		extract($_POST); // je vous renvoie à la doc de cette fonction
		// On va chercher le mot de passe afférent à ce login
		$sql = "SELECT login, mot_de_passe, nom, adresse, cp, ville, telephone1, portable, fax, mail FROM table1 WHERE login = '".addslashes($login)."'";
		$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
		// On vérifie que l'utilisateur existe bien
		if (mysql_num_rows($req) > 0) {
			$data = mysql_fetch_assoc($req);
			// On vérifie que son mot de passe est correct
			if ($password == $data['mot_de_passe']) {
				$loginOK = true;
			}
		}
	}
	// Si le login a été validé on met les données en sessions
	if ($loginOK) {
		$_SESSION['nom'] = $data['nom'];
		$_SESSION['adresse'] = $data['adresse'];
		$_SESSION['cp'] = $data['cp'];
		$_SESSION['ville'] = $data['ville'];
		$_SESSION['telephone1'] = $data['telephone1'];
		$_SESSION['portable'] = $data['portable'];
		$_SESSION['fax'] = $data['fax'];
		header('Location: index.php');
		exit();
	}
	else {
		echo 'Une erreur est survenue, veuillez réessayer !';
	}
?>

Désolé, aucun changement...

Posté : 01 janv. 2007, 20:09
par Grenouille32
En plus, sur mon fichier appelant (i.e. celui duquel je part) la première ligne est évidement réservée à :
<?php
// On démarre la session
session_start();
?>

Posté : 01 janv. 2007, 20:19
par Ajoloca
As-tu repris le code que je t'ai donné?

Posté : 01 janv. 2007, 20:21
par Truc
Modération :
Visiblement tu n'est pas très familier avec le PHP.

Pourquoi avoir posté dans ce Forum (PHP4) l'intitulé précise pourtant qu'il est réservé aux utilisateur plus expérimentés.
Ce n'est pas une critique mais les réponses sont adaptées au Forum... la preuve tu as eu LA réponse sans plus d'explications car sous entenu du maitrises les bases.

J'en profites pour déplacer dans le Forum plus approprié "Débuter en PHP"

De plus utilise les balises [ PHP] et [ /PHP] pour encadrer du code (des boutons au dessus de la zone de saisie sont prévu à cet effet).
Je l'ai fait pour toi cette fois mais pense y à l'avenir.
Le règlement de PHPFrance!

Et pour finir... ce sujet à déjà été traité plusieurs fois => une recherche n'est pas superflue

Réponse à Ajoloca

Posté : 01 janv. 2007, 20:26
par Grenouille32
Oui, j'ai repris le code tel quel !
Tjs message d'erreur.

Réponse à Modérateur

Posté : 01 janv. 2007, 20:28
par Grenouille32
Recherche sur "ouverture automatique page php"
ne donne pas de résultat satisfaisant !
Merci tout de même