SUN Jiangong
SUN Jiangong

Reputation: 5312

How to redirect to the current page with form in php?

I tried to redirect to the current page with form in my php application. Now i have met a problem.

<form name="myform" action="?page=matching" method="GET">

<input id="match_button" type="submit" name="button" value="button" onClick="func_load3()" />

</form>

action="?page=matching" means the current page, because i use the single entry in my php application.

With the code upon, When i click the button, it redirects to the homepage.

And I tried to use:

<form name="myform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">

but it still doesn't work.

So i have to ask for help from you. Do you have any ideas about that? How to fix it? Thanks in advance.

Upvotes: 4

Views: 25517

Answers (6)

turbod
turbod

Reputation: 1988

Work only with post method.

Upvotes: 0

turbod
turbod

Reputation: 1988

try this index.php:

switch ($_REQUEST['site']){
  case 'somethings':      
     if ($_POST['k_send']){ 
       //somethings
     }
  ...

form.php

<form name="send" action="index.php?site=somethings" 
  <input ...
  <input type="submit" name="k_send" ...

Upvotes: 0

Andy
Andy

Reputation: 443

PHP_SELF doesnt include Query string, you have to tag that on the end

<?php
$formAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) { 
    $formAction .= "?" . $_SERVER['QUERY_STRING']; 
}
?>

then set that as your form action:

<form name="myform" action="<?=$formaction;?>" method="GET">

Thou i guess just doing:

<form name="myform" action="<?=$_SERVER['PHP_SELF']. "?" . $_SERVER['QUERY_STRING'];?>" method="GET">

Might work too, not sure what it will do if the QUERY_STRING is empty thou

Upvotes: 2

Beno&#238;t Vidis
Beno&#238;t Vidis

Reputation: 3902

<form name="myform" method="GET">
  <input type="hidden" name="page" value="matching" />
  <input id="match_button" type="submit" name="button" value="button" onClick="func_load3()" />
</form>

Alsoy, the JS function func_load needs not to redirect the page to somewhere.

Upvotes: 1

erenon
erenon

Reputation: 19118

$_SERVER[PHP_SELF] is probably index.php. Have you looked at it? You need:

<?php echo $_SERVER['PHP_SELF']. '?page=matching'; ?>

I recommend to build a link helper that manages your routes.

Upvotes: 0

Sarfraz
Sarfraz

Reputation: 382746

leave the action part empty to redirect to current page eg:

<form action="">

or if you want to redirect to some other page, you can do so like this:

<form action="somepage.php">  // page must be in the same directory

If you want to append query string then:

<form action="somepage.php?var=value&var2=value">

If you want to redirect to a page one directory back then:

<form action="../somepage.php?var=value&var2=value">

Two directories:

<form action="../../somepage.php?var=value&var2=value"> and so on

inside a nother folder

<form action="yourfolder/somepage.php?var=value&var2=value">

Upvotes: 14

Related Questions