私はマイクロサイトを構築しており、パスワードリセットの動作に問題があります。PHP検証スクリプトのデバッグ
ユーザーにパスワードを2回入力するフォームがあります。私はパスワードナチではなく、唯一の要件はパスワードが5文字以上であることです。送信時に、フォームデータは$ _POST配列に追加され、サイト全体のPHP関数スクリプトのsetPass関数に送られます。私は、この例では、データベースの挿入コードを残している
function setPass(){
$link= connectDB();
$query= "select * from People where Username='" . $_SESSION['name'] . "' Limit 1";
$result= $link->query($query);
if ($result->num_rows==0){
$_SESSION['status']= 'invaliduser';
header("location: ../index.php");
} else {
$first = $_POST['firstPass'];
$second = $_POST['secondPass'];
if (($first == $second) && (strlen($first) > 5)){
$password = sha1($first);
}
}
}
関数です。
私の問題は、このスクリプトecho $_SESSION['name'] . " and password: " . $first;
がページ本体に含まれていて、ユーザー名を表示していますが、警告がunidentified variable: first
であるということです。これは変数$password
にアクセスしようとしたときにも発生します。
以前のテストでは、ページがリダイレクトされないため、最初の条件が真であることがわかりました。
したがって、elseブロックの実行に失敗する原因は何ですか?
あなたのコードに 'echo'が表示されません。どこで' echo'をしようとしていますか?あなたは 'setPass'関数の内部でそれをやっていますか? –
私はいくつかのHTMLヘッダーとbodyタグをsetPass関数があるPHPページに追加しました。それがエコータグです。 – Jason
ええ、 'setPass'関数の外でそれらの変数にアクセスしようとするならば、あなたは範囲外です。以下の答えと同様に、グローバルまたは '$ _SESSION'を使用してください。 –