2009-12-10 3 views
0

J'essaie de créer un système de connexion simple. Quand je cours le formulaire de connexion (avec le nom d'utilisateur et le mot de passe corrects) il ne semble pas courir le php. Aucune suggestion?principaux problèmes php

<?php 
$host="linuxserver"; // Host name 
$username="jparry2"; // Mysql username 
$password=""; // Mysql password 
$db_name="jparry2"; // Database name 
$tbl_name="customer"; // Table name 

// Connect to server and select databse. 
mysqli_connect("$host", "$username", "$password")or die("cannot connect"); 
mysqli_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysqli_query($sql); 

// Mysql_num_row is counting table row 
$count=mysqli_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 
// Register $myusername, $mypassword and redirect to file “login_success.php” 
session_register("myusername"); 
session_register("mypassword"); 
header("location:login_success.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

<html> 
<body> 

</body> 
</html> 

modifier ajouté sous forme code de connexion

<html> 
<head><title>Login</title></head> 
<body> 


<form action='checklogin.php' 
       method='POST' style='margin: .5in'> 
    <p><label for='user_name' style='font-weight: bold; 
      padding-bottom: 1em'>USER ID: </label> 
     <input type='text' name='myusername' id='myusername' 
      value='' /></p> 
    <p><label for='password' style= 'font-weight: bold'>Password: </label> 
     <input type='password' name='mypassword' id='mypassword' 
      value='' /></p> 
    <p><input type='submit' value='Login'> </p> 
     <input type='hidden' name='sent' value='yes'/> 

<a href= "/home/jparry2/public_html/register.php">Register</a> 

    </form> 

</body> 
</html> 
+1

Que dit le code source du navigateur? Que vois-tu là? –

+1

Je pense que vous devriez spécifier beaucoup plus d'informations que cela. Par exemple, quel système d'exploitation utilisez-vous? Quel est le problème? Aucune sortie affichée. Est-ce qu'un simple travail? – Alfred

+0

Pouvez-vous s'il vous plaît ajouter du code pour votre formulaire de connexion? –

Répondre

5

Si votre navigateur vous demande de télécharger le fichier php cela signifie que l'interpréteur PHP n'est pas invoqué . c'est-à-dire que vous ne l'avez pas installé ou configuré correctement.

1

Vous obtenez un message d'erreur? Ça me semble ok. Avez-vous essayé de faire écho quelque chose dans le bloc if par exemple? Cela pourrait vous aider à comprendre ce qui ne va pas.

Certaines choses que vous pouvez vérifier ou essayer:

  • Avez-vous des rapports sur l'erreur?
  • Mettez `var_dump ($ _ POST); mourir(); en haut de la page pour voir si les variables $ _POST sont soumises correctement.
  • Assurez-vous de ne rien envoyer au navigateur avant la fonction header(). Si error_reporting est désactivé et que vous avez envoyé quelque chose au navigateur, l'utilisation de header() entraînera une erreur fatale qui pourrait provoquer une page blanche vierge.

Quelques autres notes de votre code:

  • Vous n'avez pas besoin de mettre les variables à l'intérieur des guillemets doubles, ils travaillent sur leur propre: mysqli_select_db("$db_name") devient mysqli_select_db($db_name)
  • Vous n'avez pas besoin stripslashes() si vous faites mysql_real_escape_string. Ce dernier va gérer le travail seul.
1

Dans certains navigateurs, l'en-tête Location est sensible à la casse, et donc votre appel header("location:login_success.php"); peuvent ne pas fonctionner (un comment sur le header documentation page suggère que cela se produit dans IE7). Essayez de mettre en majuscule le l dans Location.

+1

IIRC, Dans la plupart des navigateurs les en-têtes suivent la norme: Noms majuscules et espace après ":". –

1

Vous ne faites pas de "session_start()", donc votre session ne peut pas être utilisée. Peut-être que vous avez besoin de commencer dans votre script "login_success.php".

1

Je suis d'accord avec Daniel, en révisant header("Location: login_success.php");

En outre, comme une note de côté car, au moment de la rédaction de ce fait, il n'a pas été clairement expliqué ce qui ne fonctionne pas, mais vous lors de l'ajout des variables de session dont vous avez besoin avoir session_start().

aussi essayer d'utiliser $_SESSION['variable'] depuis session_register() est obsolète depuis PHP 5,30 pris de PHP: session_register essayer quelque chose comme ça

if($count==1){ 
session_start(); 
// Register $myusername, $mypassword and redirect to file “login_success.php” 
$_SESSION['username'] = $myusername; 
$_SESSION['mypassword'] = $mypassword; 
session_write_close(); // makes sure nothing was lost during redirect 
header('Location: nextpage.php'); 
}