wake-up-neo.com

Wie behalte ich bereits festgelegte GET-Parameterwerte bei der Formularübermittlung?

Ich habe eine URL: foo.php?name=adam&lName=scott, und in foo.php habe ich ein Formular, das mir Werte von rectangleLength & rectangleBreadth mit einem Senden-Button gibt.

Wenn ich auf diese Senden-Schaltfläche mit der Formularaktion $_SERVER['REQUEST_URI'] klicke, erhalte ich die folgende Ergebnis-URL: foo.php?rectangleLength=10&rectangleBreadth=5 (diese Werte wurden vom Benutzer eingegeben).

Beachten Sie, dass ich meine vorherigen Werte name & lName von der URL verliere.

Wie kann ich sie behalten?

Denken Sie auch daran, dass ich zu foo.php zurückkehren muss und wenn der Benutzer das Formular erneut senden möchte, sollten sich die Werte für Länge und Breite ändern.

23
saurabh

Sie können in dem Formular auf der ersten Zielseite, in Ihrem Fall blabla.php, zwei ausgeblendete Felder hinzufügen:

<form ...>
  <input type="hidden" name="name" value="<?php echo htmlspecialchars($_GET['name']);?>">
  <input type="hidden" name="lName" value="<?php echo htmlspecialchars($_GET['lName']);?>">

  <!-- rest of the form here -->
</form>

Verwenden Sie für eine dynamische Lösung eine foreach-Schleife:

<?php
foreach($_GET as $name => $value) {
  $name = htmlspecialchars($name);
  $value = htmlspecialchars($value);
  echo '<input type="hidden" name="'. $name .'" value="'. $value .'">';
}
?>

Sie können den dynamischen Ansatz für eine Liste bekannter möglicher Schlüssel einschränken:

<?php
$keys = array('name', 'lName', ...);
foreach($keys as $name) {
  if(!isset($_GET[$name])) {
    continue;
  }
  $value = htmlspecialchars($_GET[$name]);
  $name = htmlspecialchars($name);
  echo '<input type="hidden" name="'. $name .'" value="'. $value .'">';
}
?>
29
Emil Vikström

Dafür gibt es verschiedene Möglichkeiten. Alle schreiben die empfangenen Parameter in eine Datei, einen Arbeitsspeicher oder eine Datenbank und rufen sie später mit einem Schlüssel ab

Die einfachste Methode ist etwa eine Sitzungsvariable: http://php.net/manual/de/features.sessions.php

Das Haupt-Setup ist ungefähr so ​​(Achtung: Das ist unsicherer Code. Stellen Sie sicher, dass Sie nur Sitzungsvariablen hinzufügen, die Sie behalten möchten, und bereinigen Sie die Benutzereingaben!):

<?php
session_start();
foreach ($_GET as $key=>$value) {
    $_SESSION[$key]=>$value;
}

?>

solange der Benutzer den Browser nicht schließt, können Sie jetzt mit $_SESSION[varname]; auf diese Variablen zugreifen.

3
ty812

Eine einfachere Lösung, um die URL durch Verwendung von http_build_query nicht zu ändern.

 <form action="<?php echo $_SERVER["PHP_SELF"] . '?'.http_build_query($_GET); ?>" ... 
  ..
  ..

Einmal musste ich die Ergebnisse in einer Tabelle sortieren und die Suchergebnisse von GET erhalten. Das hat mir gefallen

unset($_GET['sort']); // sort param is removed, otherwise there will be created many sort params
$url = http_build_query($_GET);

echo "<a href='?".$url."&sort=title'>Title</a>";
echo "<a href='?".$url."&sort=author'>Author</a>";
2
  1. Im Menü (Aufruf von HTML) rufe ich VendorSearch.php auf. Die Variable fromvs wird in der URL verwendet.
  2. Das Ziel php VendorSearch.php führt verschiedene Jobs aus, basierend auf dem Wert von $_GET['fromvs']
  3. In VendorSearch.php aftersession_start (), 

    $srchfor =""; $fromwhat = $_GET['fromvs']; $_SESSION['fromwhat'] = $fromwhat; $vs = $fromwhat;

  4. Verwenden Sie eine versteckte Eingabe, um die übergebene Variable zu speichern

    <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat']; ?>"></div>

  5. Aber das ist die 

Segment im Aufruf von html .... Fügen Sie einen Subunternehmer hinzu </ li> .... Subunternehmerverträge zuordnen </ li> ..... Abmelden </ li> ... .

Segment in Zielphp: VendorSearch.php

<?php
//VendorSearch.php
//http://mted202.mtaent.org:9051/ocr/login.php rweinbau 
require_once('dbinfo.php');

session_start();
$c = oci_pconnect("ocr","ocrmta","HQT4");
oci_set_client_identifier($c, $_SESSION['username']);
$username = htmlentities($_SESSION['username'], ENT_QUOTES); 
.....
$srchfor ="";

$fromwhat = $_GET['fromvs'];
$_SESSION['fromwhat'] = $fromwhat;
$vs = $fromwhat;

if (isset($_POST['srchvnd']))
{ 
 $vs = $_POST['fromvs'];

 somefunction($vs);

}
else
{
    ;
}

?>
<body>
<form class="vfrmsrch" name="vndsearch" id="vndsearch" action="VendorSearch.php?fromvs='<?php    echo $fromwhat; ?>'" method="POST"> 
    <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat'];  ?>"></div>
......
</form>
.......
</body>  
</html> 
<?php
function somefunction($vvs){    
//$msg = "We are inf somefunction() function </a></div><br>";

// echo  "<div style='position: absolute; top: 100px; left: 10px;'><a style='color:blue'>".$msg;

$_SESSION['fromwhat'] = $vvs;
............

oci_close($c);
}
0
Peter Moh

Der folgende Code funktioniert für mein Projekt. Hoffe, es hilft einigen. 1. Im Menü (Aufruf von HTML) rufe ich VendorSearch.php auf. Die Variable fromvs wird in der URL verwendet. 2. Das Ziel php VendorSearch.php führt verschiedene Jobs aus, basierend auf dem Wert von $ _GET ['fromvs'] 3. In VendorSearch.php aftersession_start (), 

$srchfor ="";
$fromwhat = $_GET['fromvs'];
$_SESSION['fromwhat'] = $fromwhat;
//save value to $VS
$vs = $fromwhat;

3. Use hidden input to store URL passed variable
<div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat'];  ?>"></div>

4. But this thie field's value may lost after clicking button "srchvnd". So use a function to reset 
$_SESSION['fromwhat'];  

if (isset($_POST['srchvnd']))
{ 
     $vs = $_POST['fromvs'];

     somefunction($vs);

}

-----------------Source code----------------------

Segment in Calling html 
....
<body>
<div style="  position: absolute; top: 1px; left: 5px; height:740px;  width:205px; border-radius: 10px;" >
<!-- Start css3menu.com BODY section -->
<ul  id="css3menu1" class="topmenu">
    <li class="topfirst"><a href="VendorSearch.php?fromvs=V" target="I1" style="width:183px;">Add a Subcontractor </a></li>
    ....
    <li class="topmenu"><a href="VendorSearch.php?fromvs=S" target="I1" style="width:183px;">Assign Subcontractor Contracts</a></li>
    .....
    <li class="toplast"><a href="login.php" target="_self" style="width:183px;">Log Out</a></li>
</ul>
....
</div>

Segment in target php: VendorSearch.php

<?php
//VendorSearch.php
//http://mted202.mtaent.org:9051/ocr/login.php rweinbau 
require_once('dbinfo.php');

session_start();
$c = oci_pconnect("ocr","ocrmta","HQT4");
oci_set_client_identifier($c, $_SESSION['username']);
$username = htmlentities($_SESSION['username'], ENT_QUOTES); 
.....
$srchfor ="";

$fromwhat = $_GET['fromvs'];
$_SESSION['fromwhat'] = $fromwhat;
$vs = $fromwhat;

if (isset($_POST['srchvnd']))
{ 
     $vs = $_POST['fromvs'];

     somefunction($vs);

}
else
{
    ;
}

?>
<body>
    <form class="vfrmsrch" name="vndsearch" id="vndsearch" action="VendorSearch.php?fromvs='<?php echo $fromwhat; ?>'" method="POST"> 
        <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat'];  ?>"></div>
    ......
      <td><input type="submit" class="slbt" name="srchvnd"  id ="srchvnd" vaue="Search"></input></td>
     ......
    </form>
.......
</body>  
</html> 
<?php
function somefunction($vvs){    
//$msg = "We are inf somefunction() function </a></div><br>";

// echo  "<div style='position: absolute; top: 100px; left: 10px;'><a style='color:blue'>".$msg;

$_SESSION['fromwhat'] = $vvs;
............

oci_close($c);
}
0
Peter Moh