2016-03-23 14 views
0

So habe ich eine html-Datei und eine php Datei und was ich versuche zu tun ist, um die Werte in dem HTML-Code URL Parameter zu meinem php passieren.übergeben Sie die Parameter in der HTML-URL php

So zum Beispiel, wenn die URL ist localhost\files\reset_username.html?args=erft5467uio$d - dann die erft5467uio$d Bit sollten im $_GET('args') in meinem php erfaßt werden. Problem ist, dass dieser Wert nicht an die Datei php selbst übergeben wird.

Dies ist html Datei:

<html> 
    <form id='setUsername' action='setnewusername.php' method='post'> 
    <label for='username' >New Username: </label> 
    <input type='text' name='usernameInput' id='username' /> 
    <label for='newUsername' >Confirm Username: </label> 
    <input type='text' name='newUsernameInput' id='newUsername' /> 
    <input type='text' name='Submit' value='Change Username' /> 
    </form> 
</html> 

Das ist mein php Code:

<?php 
require "init.php"; 

if(!empty($_GET['args']) && !empty($_GET['usernameInput'])){ 
    $paramOne = $_GET['args']; 
    $paramTwo = $_GET['usernameInput']; 
    echo $paramOne; 
    echo $paramTwo; 
} 
else{ 
    echo "The args was not received"; 
} 

?> 

Wenn ich meinen Code testet, der PHP-Druck "The args was not received". Dies bedeutet, dass der Wert erft5467uio$d nicht übergeben wurde.

Wie übergebe ich solche Werte an das php Skript?

EDIT: Jedes Mal, wenn ein Benutzer Anfragen ihren Benutzernamen haben geändert sie einen Link mit einem einzigartigen args Wert erhalten. In diesem Fall erhält der Benutzer eine E-Mail mit dem Link localhost\files\reset_username.html?args=erft5467uio$d in diesem Fall an seine E-Mail. Wenn sie auf den Link klicken, werden sie auf die HTML-Seite geleitet. Nach dem Ausfüllen des Formulars, den Code erft5467uio$d sowie die usernameInput muss an die PHP übergeben werden

Dank

+4

* ahem * => 'method = 'post'' –

+1

Wie Fred bemerkte, sollten Sie' $ _POST [' args '] 'verwenden. Normalerweise werden '$ _GET' Anfragen von' link ' – Xorifelse

+2

... oder' method = 'get'' verwendet oder übergeben Sie es in Ihrer' action = 'setnewusername.php'' als zusätzliches Argument. 'action = 'setnewusername.php? arg ...'" –

Antwort

1

Vorwort: Ich sehe nicht, warum Sie eine hrefund mit einem Form dafür.

Wenn Sie möchten, dass dies funktioniert, schlage ich vor, dass Sie das, was ich im Folgenden geschrieben habe, durchgehen, und gehen Sie es bitte sorgfältig durch, da es ziemlich lang ist.

Hinweis: Ich möchte darauf hinweisen, dass Sie den falschen Typ für Ihre Absenden-Schaltfläche verwendet haben, nämlich text anstelle von submit.

<input type='text' name='Submit' value='Change Username' /> 

, die als gelesen haben sollte:

<input type='submit' name='Submit' value='Change Username' /> 

zuerst Ihre Form/PHP: (ich ein paar Zeilen entfernt aus, die nicht mehr rechnen).

form.html (zB Dateinamen)

<html> 
    <form id='setUsername' action='setnewusername.php' method='post'> 
    <label for='username' >New Username: </label> 
    <input type='text' name='usernameInput' id='username' /> 
    <label for='newUsername' >Confirm Username: </label> 
    <input type='text' name='newUsernameInput' id='newUsername' /> 
    <input type='submit' name='Submit' value='Change Username' /> 
    </form> 
</html> 

Wenn Sie ein Argument übergeben, was dann an den Benutzer per E-Mail eine URL mit den Parametern wäre gesendet wird.

NOTA: Gehen Sie einige der Kommentare in den Codes durch.

setnewusername.php

N. B .: Wenn Sie den Wert für <input type='text' name='newUsernameInput' id='newUsername' /> verwenden möchten, dann müssen Sie es in die PHP hinzuzufügen. Ich bin mir nicht sicher, wie Sie das verwenden möchten.

<?php 
require "init.php"; 

if(isset($_POST['Submit']) && !empty($_POST['usernameInput'])){ 

    $username = $_POST['usernameInput']; 
    echo $username; 

$user = "erft5467uio"; // This is probably what should be taken from one of your inputs. 

$to = "[email protected]"; 
$subject = "Your subject here"; 
$from_email = "[email protected]"; 

$message = " 

Dear $username, 

Visit the following site to verify your account changes: 

http://www.example.com/from_mail.php?args=$user&usernameInput=$username 

"; 

$headers = "From: $username <$from_email>\r\n"; 

/* or use the below 
$headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: [email protected]' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
*/ 


mail($to, $subject, $message, $headers); 
// mail() or your own mailer 
} 
else{ 
    echo "The args was not received."; 
} 

?> 

Das Beispiel von oben http://www.example.com/from_mail.php?args=$user&usernameInput=$username so etwas wie die einmal gesendet generiert folgenden:

http://www.example.com/from_mail.php?args=john&usernameInput=BigBadJohn

Dann in Ihrer nächsten Datei from_mail.php aus geben oben Argumente (das, das Feuer wird Wenn der Benutzer auf den Link klickt, den Sie gesendet haben, würden Sie Folgendes tun:

<?php 
require "init.php"; 

if(!empty($_GET['args']) && !empty($_GET['usernameInput'])){ 

    $paramOne = $_GET['args']; 
    $paramTwo = $_GET['usernameInput']; 
    echo $paramOne; 
    echo "<br>"; 
    echo $paramTwo; 

// do something else here such as db insertion etc. 
} 
else{ 
    echo "The args was not received"; 
} 

?> 

Fußnoten:

  • Ich hoffe, dies dient Ihnen gut. Wenn ich etwas verpasst habe, lass es mich wissen und ich werde mein Bestes geben, um zu helfen.

Abschließender Hinweis:

Ich weiß nicht, was die $d in erft5467uio$d für ist, deshalb wusste ich nicht, was zu tun ist.

Verwandte Themen