2016-09-17 1 views
0

J'ai vu ce problème de débordement de pile partout mais aucune des méthodes n'a aidé.Isset ne fait toujours pas son travail

Forme:

<form action="login.php" method="POST"> 
     <input name="username" type="text" placeholder="User Name"> 
     <input name="rawpassword" type="password" placeholder="Password"> 
     <input value="Login" type="submit"> 
</form> 

login.php:

// Gets user entered details from form. 
if (isset($_POST['username'])) { 
    $username=$_POST['username']; 
} else { 
    $username=null; 
} 
if (isset($_POST['rawpassword'])) { 
    $rawpassword=$_POST['rawpassword']; 
} else { 
    $rawpassword=null; 
} 

// Hashes password through SHA-1. 
$password = sha1($rawpassword); 

echo "$username"; 
echo "$rawpassword"; 
echo "$password"; 

Mon problème est que le

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

REVIENT comme faux et fera les deux variables nulles et echos null (rien). Mais si je devais faire ceci:

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

Il renvoie l'erreur d'index indéfini que tout le monde obtient.

L'aide sera très appréciée.

+2

Pourquoi voudriez-vous lancer 'isset ($ _ POST [''])'? – Utkanos

+0

Comment les deux valeurs sont-elles affichées? Pouvez-vous fournir le code HTML du formulaire, ou appel Ajax, ou tout autre que vous utilisez pour laisser l'utilisateur soumettre les données? – trincot

+0

Je pense qu'il l'utilise comme une sorte de joker qui représente soit $ _POST ['nom d'utilisateur'] et $ _POST ['rawpassword'] ... – Nunchy

Répondre

0

J'ai corrigé le problème que j'avais, évidemment je n'ai pas fait assez de recherche pour découvrir que le problème était que JQuerymobile (devrait avoir mentionné que j'utilisais JQuerymobile) a ses propres manières spéciales de demander des pages.

Tout ce que je devais faire était d'ajouter data-ajax="false" dans la balise <form>, maintenant tout fonctionne comment je voulais que cela fonctionne.

Merci à tous pour vos suggestions et votre aide.

0
if (isset($_POST['username']) && isset($_POST['submit'])) { 
    $username=$_POST['username']; 
} 

S'il vous plaît essayer de vérifier soumettre aussi comme nom d'utilisateur et autre champ ne sont pas toujours définis. Je m'attends à ce que ce soit le problème car le quesion n'est pas clair sans html.

0

essayez d'utiliser ceci dans


HTML

<form action="login.php" method="POST"> 
    <input name="username" type="text" placeholder="User Name" required> 
    <input name="rawpassword" type="password" placeholder="Password" required> 
    <input value="Login" type="submit" name="Login"> 
</form> 

PHP

<?php 
if (filter_input(INPUT_POST,'Login')==='Login') { 
    $username=$_POST['username']; 
    $rawpassword=$_POST['rawpassword']; 
    // Hashes password through SHA-1. 
    $password = sha1($rawpassword); 
} else { 
    $username=''; 
    $rawpassword=''; 
} 


echo $username; 
echo $rawpassword; 
echo $password; 
0

Je suggère d'utiliser empty() au lieu de isset(). Car isset() vérifie uniquement si la variable (POST) est définie et non NULL. Il ne vérifiera pas s'il est vide ou non. Si quelqu'un clique simplement sur Envoyer sans entrer de nom d'utilisateur ou de mot de passe, votre code l'acceptera toujours. Si vous utilisez empty() à la place, il vérifiera également si le nom d'utilisateur et le mot de passe ne sont pas vides. Comme empty() fait exactement la même chose que isset(), mais vérifie également si elle n'est pas vide, il n'est plus nécessaire d'utiliser isset().

De même, il n'est pas nécessaire d'insérer des variables entre guillemets lorsque vous les renvoyez.

+0

J'ai essayé votre méthode mais toujours pas de succès. Je ne pense pas que cela puisse causer le problème, mais je suis actuellement en train d'exécuter la dernière version de Wampserver64 et l'URL est localhost car je ne suis pas redirigé vers le port. Cela vaudrait-il la peine de vérifier sur un site d'hébergement partagé pour voir si ce code fonctionne sur un serveur? – DTYlan

+0

@DTYlan Hmm vous pouvez essayer, mais cela ne devrait pas avoir d'importance. Tant que vous utilisez 'localhost' ou' 127.0.0.1' dans votre navigateur pour visiter votre site web, il n'y a pas besoin de transférer quoi que ce soit. Cela devrait toujours fonctionner parfaitement pour vous. – icecub

+0

@DTYlan Remplissez-vous le formulaire avant de vérifier ce code? Parce que si vous ne chargez que ce code et ignorez votre formulaire, il renverra toujours null. Les variables '$ _POST ['']' sont toujours nulles si vous ne publiez rien avec le formulaire en premier. – icecub