2017-02-23 5 views
0

この質問は何百万回も聞かれましたが、うまくいけば私は答えが見つからないようです。私は成功したサインアッププロセスの後にインデックスページ(ログインが行われる)にリダイレクトしようとしています。理想的には別のjqueryファイルを使用して別のページにリダイレクト

header("Location: index.php"); 

が使用されます。しかし、私は私のPHP検証の一環としてエコーを使用することはできません。私は以下のコードは完全に動作します。

<script> 
    window.location.href = "index.php"; 
</script> 

を使用すると、これは私の検証コードの端部である:

//loads of other form validation using echo's 
... 

{ 
    $resultusername = queryMysql("SELECT * FROM members WHERE username='$username'"); 

    if ($resultusername->num_rows) 
    { 
echo <<<_END 
<div id=usernameinuse> 
    <p>This username is already in use!</p> 
</div> 
_END; 

} 
else 
{ 
      $qresult = queryMysql("INSERT INTO members (firstname, 
surname, gender, dob, email, username, password) 
VALUES('$firstname', '$surname', '$gender', '$dob', '$email', '$username', '$password')"); 



echo <<<_END 
<script> 
window.location.href = "index.php"; 
</script> 
_END; 

} 

私は、これは完璧に動作言ったように、しかし、私は私のとは別のファイルにあるように、すべてのjQueryとJavaScriptのような理想的にいただきたいですPHPファイルの最上部にリンクされています(他のjqueryファイルは既にそこにあります)、PHPファイルの途中でjavascriptを使わないようにしたいと考えています。だから私の質問は、そのスクリプトが外部にし、これは&& ($qresult)ビットなしで動作しますが、あなただけの提出をクリックした場合、その後、検証の非が行わ

$('input[type=submit]').click && ($qresult)(function() { 
window.location.href = 'index.php'; 
return false; 
} 

のようにjqueryのファイルでそれをキャッチする方法はありさ何もデータベースに入力されません。

また、PDOの方が使いやすく、mysql関数は少し古くなっていますが、私はすべてに慣れています。フォームのアクションは、あなたがこのようなinsert_user()何かを呼び出すことになります。この同じファイルへのPOSTリクエストを送信した場合

function insert_user($data) { 
    $qresult = false; 
    $resultusername = queryMysql("SELECT firstname FROM members WHERE username='$username'"); 
    if ($resultusername->num_rows < 1) 
    { 
     $qresult = queryMysql(" 
     INSERT INTO members (firstname, surname, gender, dob, email, username, password) 
     VALUES('{$data['firstname']}', '$data['surname']', '$data['gender']', '$data['dob']', '$data['email']', '$data['username']', '$data['password']') 
     "); 
    } 
    return $qresult; 
} 

:ありがとう

+0

PHPコードでは、 'echo 'を行うことができます ' –

+0

@NikolayGanovskiすみません、私の投稿を編集する必要があります!それは私がやったことです、そのスクリプトを外部にしてjqueryファイルにキャッチする方法があるのだろうか。 – crapAtCode

+0

もちろん、 'のように書くことはできますが、メリットを参照してください... – Jeff

答えて

1

は、あなたがこの機能を持つコントローラのファイルを持っているとしましょう:

$inserted = insert_user($_REQUEST); 
if($inserted) { 
    include("successful_registration.php"); 
} 
else { 
    include("user_already_exists.php"); 
} 

これらの2つのインクルードファイルは、2つの異なるビューです。 このロジックを好きなように微調整したいかもしれませんが、ここでのアイデアはビジネスロジックをビューロジックから分離することです。 が含まれていない場合は、header()を使用して別のページにリダイレクトすることができます。

ユーザーを挿入するためにajaxを使用している場合は、コントローラへのPOSTによって、クライアント側で必要な情報を返すことができます(コンテンツの操作、ページなど)。

これは単なる意見かもしれませんが、クエリコードをビューコードから分離することは、この問題を正しく解決するための第一歩です。

関連する問題