web-dev-qa-db-ja.com

PHP:送信ボタンをクリックした後に同じページをリダイレクトする

PHPを使用して同じページにリダイレクトする方法はありますか?グリッドビューをリロードまたは更新する必要があります。ウェブサイトやリンクにリダイレクトする必要はありません。同じページまたはmain.phpのような同じフォームにリダイレクトする必要があります。

すでにheader()を使用しましたが、機能せず、Webサイトにリンクしているだけです。

ありがとう。

フォームにリダイレクトする2つの例を次に示します。ファイル名がmain.phpだとしましょう

<form action="main.php">
Name: <input type="text" name="name">
<input type="submit" name="submit" value="Submit">
</form> 

またはこれを使用できます

<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="name">
<input type="submit" name="submit" value="Submit">
</form> 

それはあなたの質問に答えましたか?

0
tsknakamura

単に行う:

$referer = $_SERVER['HTTP_REFERER'];
header("Location: $referer");
7
Gabriele Medeot

すべての投稿の後に場所ヘッダーを使用してリダイレクトする必要があります。そうしないと、ユーザーが更新ボタンを押すと、同じフォームが再度送信されます...

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    file_put_contents('data.txt', $_POST['data']);
    header('location: ' . $_SERVER['PHP_SELF']);
} else {
    header('content-type: text/html; charset=utf-8');
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
          enctype="application/x-www-form-urlencoded; charset=utf-8">
        <input name="data" type="text" value="<?php echo file_get_contents('data.txt'); ?>"/>
        <button>küldés</button>
    </form>
<?php
}

ところで。適切な作業をしたい場合は、この種のスパゲッティコードの代わりにphpフレームワークを試してみてください...

2
inf3rno