2017-08-29 5 views
0

私はWebファイルサーバー(クラウド)を作成しようとしています。私はindex.phpに基本フォームのパスワード認証を入れることに決めました。ユーザーがパスワードを入力してボタンをクリックすると、JSはそのパスワードをindex.phpに送信し、それが正しいかどうかを判断します。ページを更新せずにPHPとJSでリダイレクト

もしそうなら、index.phpはユーザをfiles.phpにリダイレクトします。そうでなければ、ページをリフレッシュします。 リダイレクトとリフレッシュはheader();で行われますが、これを使用してブラウザの[ネットワーク]タブを見ると、files.phpが届きますが、ロードされません(index.phpのままです)。私はその理由がヘッダが何らかのテキストの後に送られていると確信しています(それはヘッダーです)。

現在のページを送信した後、ユーザーのブラウザをページにリダイレクトするにはどうすればよいですか? JSにそれを依頼する必要がありますか?それではどうですか? JSは

<html> 
<head> 
    <title>PHP Test</title> 
</head> 
<body> 
<?php 
    echo ' 
    <h1>Hello World</h1> 
    <form> 
    <input name="password" type="text"></input> 
    <button onclick=authClick() class="test" type="button"></button> 
    </form> 
    '; 
    print_r($_POST); 
    if ($pass == "123123") { 
    header("Location: files.php"); 
    } 
?> 
<script src="scripts/main.js"></script> 
</body> 
</html> 

そしてここに行く:ここに私のindex.phpである

window.open(response.data.url, '_blank'); 

を次のようにあなたがそれを直接開く場合のJsを使用して

function authClick() { 
var editBox = document.querySelector('input'); 
var xhr = new XMLHttpRequest(); 
var body = 'password='+encodeURIComponent(editBox.value); 
xhr.open("POST","/index.php",true); 
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
xhr.send(body); 
} 

var myHeading = document.querySelector('h1'); 
myHeading.textContent = 'nigga'; 
b = document.querySelector('button'); 
b.setAttribute('content', 'test content'); 
b.setAttribute('class', 'btn'); 
b.innerHTML = 'submit'; 
+0

あなたは書式を使用していますか?いくつかのコードを提供できますか? – Ivan

+0

リダイレクトコードが表示されますか? – Deckerz

+0

ajaxまたはcURLが必要な場合があります – bdalina

答えて

1

あなたはusinですg Ajax、そしてAjaxのポイントは、新しいページをロードせずにHTTPリクエストを作成することです。

新しいページをロードしたいので:JavaScriptを削除します。通常のHTML送信ボタンを使用して、通常のフォーム送信を実行します。

+0

ありがとう!それはうまくいった。 – danshat

0

あなたはそれを書くことができます現在のタブ

window.open(response.data.url); 
関連する問題