Wie kann ich ein HTML-Formular mit PHP Cookies versenden?

3 Antworten

Du hast zwei Möglichkeiten, mit PHP-Cookies während der Auswertung eines Formulars zu arbeiten.

Variante 1: Cookies zuvor im Formular ausgeben lassen.

Lässt sich mit Hilfe von input-Feldern einrichten, welchen das type-Attribut mit dem Wert "hidden zugewiesen werden".

<!-- Verstecktes input-field, das eine für die Validierung notwendige Information als value enthält -->
<input type="hidden" value="<?php print_r($_COOKIE['data']); ?>">

Diese Variante kann ausreichen, ist allerdings nicht sicher, da das versteckte Feld auf der Website zwar unsichtbar, aber im Quelltext dennoch sichtbar ist. Es handelt sich eben um reines Markup.

Variante 2: Cookies nach dem Formular-Submit erzeugen

Wie auch immer das von Nutzen sein soll, lassen sich natürlich auch im Rahmen der Validierung des Formulars Cookies erzeugen.

<?php
if(isset($_POST['formSubmitButton'])) {
   setcookie("randomdata", "12345"); //gültig bis Browser geschlossen wird
}
?>

Wie du siehst, bezieht sich besonders die zweite Variante auf die Erzeugung eines Cookie, welcher Random-Daten enthält. Kann nützlich sein, vor allem weil diese Daten vor der Erstellung nicht beeinflusst werden können.

Fazit

Willst du fixe (zuvor geladene) Userdaten übergeben, nutze dafür die GET-Methode, mit der du über einen URL Daten an ein PHP-Skript übergeben kannst.

Bei jeder anderen Angelegenheit findest du auch in der offiziellen PHP-Dokumentation Hilfe.

https://secure.php.net/manual/de/

Nutze die Suche für spezifische Themen oder PHP-Funktionen.

Grüße Savix

Wie soll man das verstehen? Möchtest du einen Wert aus einem Cookie via Formular versenden oder ein Cookie setzen, nachdem ein Formular abgeschickt wurde? Etwas anderes geht nicht.

Also einmal zu Methode a)

<!-- ... -->
<form method="post">
  <input name="username" value="<?= print $_COOKIE["username"]; ?>" />
  <button>Send</button>
</form>

Oder du setzt den Wert via JS:

<!-- ... -->
<form method="post" onsubmit="send()">
  <input id="username" name="username" />
  <button>Send</button>
</form>
<script>
  function send() {
    document.getElementById("username").value = getCookieValue("username");
  }

  function getCookie(key) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + key + "=");

    if (parts.length == 2) {
      return parts.pop().split(";").shift();
    }
  }
</script>

Und einmal zu Methode b)

<?php
  if (isset($_POST["username"])) {
    // filter ...
    // call setcookie
  }

Noch ein Kommentar zu deinem derzeitigen Code: Er ist invalid.

Die Werte von id- und name-Attributen müssen für sich unique sein, bei gleichem Feldnamen wirst du wohl auch Probleme bei der Unterscheidung zwischen Nutzername und Passwort bekommen. Des Weiteren ist ein explitizt leer gesetzes action-Attribut auf dem Formularelement invalid, denn dies erwartet in diesem Fall eine valide URL. Lasse das Attribut entweder weg oder gib ihm ein valides Ziel.

<?php echo $_COOKIE[$username]; ?>

Versenden und nicht lesen ^^

0
@Arrel

Spare Dir bitte Dein " ^^ ", ok?

Deine Quelltexte sind eine Katastrophe und Du kannst nur versenden, was Du vorher eingelesen hast.

In das Formularfeld gehört das rein, damit der Wert da drin steht. Dann kannst Du das Formular absenden und der Wert wird übergeben.

0

Variable von JavaScript zu PHP?

Hallo. Ich habe folgenen Code:

<div id="content-txt">
<form id="" onsubmit="alert('Der Text wurde in der Datenbank gespeichert.'); return false;">
<fieldset>
<textarea id="txtContent" name="txtContent" class="widgEditor nothing">
<?php $abfrage = "SELECT text FROM seiten WHERE seitenname='$p'";
$ergebnis = mysqli_query($db, $abfrage);

while ($row = $ergebnis->fetch_assoc()) {
echo $row['text'];
} ?> </textarea>
</fieldset>
<fieldset class="submit">
<input type="submit" id="subButton" value="Text in Datenbank speichern!" />
</fieldset>
</form>
</div>

<script language="javascript" type="text/javascript">
function getHTMLCode() {
var txtContent = document.getElementById('txtContent').value;
var result = document.getElementById('result');

result.textContent = '<br/>' + txtContent;

}
var subButton = document.getElementById('subButton');
subButton.addEventListener('click', getHTMLCode, false);
</script>

<p id='result'></p></div>

Mit der ID result kann ich nun den Code auf die Seite schreiben:

Nun will ich aber den Inhalt, der bei der id=result rauskommt in eine Variable schreiben bzw irgendwie in einer Funktion verwenden. Ist das irgendwie möglich?

...zur Frage

PHP Formular nach Klicken des Submit Buttons nicht löschen

Hallo

Ich programmiere mit HTML und PHP einen Zeitrechner, wo man die Zahlen in ein Formular schreibt, und möchte gerne, dass nach dem Submit-Button keine Daten aus dem Formular gelöscht werden.

Beim Suchen bin ich darauf gestossen:

<tr>
    <td nowrap>1. Zeit</td>
    <td align="right">
        <input type="text" name="d1" style="text-align:right;" value="<?php echo $_POST['d1']; ?>">
    </td>
    <td align="right">
        <input type="text" name="h1" style="text-align:right;" value="<?php echo $_POST['h1']; ?>">
    </td>
    <td align="right">
        <input type="text" name="m1" style="text-align:right;" value="<?php echo $_POST['m1']; ?>">
    </td>           
    <td align="right">
        <input type="text" name="s1" style="text-align:right;" value="<?php echo $_POST['s1']; ?>">
    </td>
</tr>

Das Problem dabei ist, das dabei immer eine Fehlermeldung kommt (Bild im Anhang). Was mache ich, damit die weggeht?

Vielen Dank für eure Antworten!

Phippe

...zur Frage

Ajax Insert?

Guten Morgen Community,

Ich würde gerne mein PHP Skript über Ajax ausführen.

Soweit hab ich schon alles stehen und die Variablen haben auch den richtigen zugewiesenen Wert jedoch wird beim versenden kein Insert ausgeführt.

Das PHP Skript an sich funktioniert auch, nur halt nicht über Ajax

Kann mir jemand sagen ob in dem Skript ein Fehler ist?

HTML Formular:

<form id="createform" action="../functions/addOrder.php" method="POST">
    <p>
      <input type="text" id ="vorname" name="vorname" class="createOrders" placeholder="Vorname" required>
	</p>
	<p>
      <input type="text" id ="nachname" name="nachname"  class="createOrders" placeholder="Nachname" required>
	</p>
	<p>
      <input type="text" id ="modell" name="modell"  class="createOrders" placeholder="Modell" required>
	</p>
	<p>
      <input type="text" id ="anmerkung" name="anmerkung"  class="createOrders" placeholder="Anmerkung" required>
	</p>
	<p>
	  <textarea rows="10" id ="aufgabe" name="aufgabe" class="createOrders" placeholder="Aufgabe" cols="40" required></textarea>
	</p>
	<p>
	  <input type="number" id ="preis" name="preis" class="createOrders" min="0.00" step="0.01" placeholder="Preis in €" name="notice" required>
    </p>
	<p>
	  <input type="submit" class="search_sub" id="submit" name="send" value="senden">
	</p>
</form>

Js

    $(".createOrder").click(function(){
        $.ajax({
            url: 'html/createOrder.php'
        }).done(function(data) {
            $('.content').html(data).hide(0).fadeIn("slow");
			$("#createform").submit(function(e){
					$("#response").html("").hide(0).fadeIn("slow");
					$.ajax({
						thttp://localhost/Enescom_Order_Panel/functions/addOrder.phpel/functions/addOrder.php",
						data : { 
						Vorname: $("#vorname").val(),
						Nachname: $("#nachname").val(),
						Modell: $("#modell").val(),
						Anmerkung: $("#anmerkung").val(),
						Aufgabe: $("#aufgabe").val(),
						Preis: $("#preis").val(),
						},
						success: function(msg)
						{
						alert($("#preis").val());
						}
					});
			e.preventDefault();
			});    
        });
    });

PHP Skript

<?php
include("dbconnection.php");
$K_ID = rand(1,20000);
$vorname = isset($_POST["vorname"]) ? $_POST["vorname"] : NULL;
$nachname = isset($_POST["nachname"]) ? $_POST["nachname"] : NULL;
$modell = isset($_POST["modell"]) ? $_POST["modell"] : NULL;
$anmerkung = isset($_POST["anmerkung"]) ? $_POST["anmerkung"] : NULL;
$aufgabe = isset($_POST["aufgabe"]) ? $_POST["aufgabe"] : NULL;
$preis = isset($_POST["preis"]) ? $_POST["preis"] : NULL;

  if (isset($_POST["send"]))
  {
    $sql = "INSERT INTO kunden (K_ID,Vorname,Nachname,Modell,Anmerkung,Aufgabe,Preis,Status)
			VALUES ('$K_ID','$vorname','$nachname','$modell','$anmerkung','$aufgabe','$preis',0)";
	  mysqli_query($dbconnection,$sql);
  }
  mysqli_close($dbconnection)
?>

Ich bedanke mich schon einmal im voraus.

Mit freundlichen Grüßen

...zur Frage

brauch nen JS Experten ;-)?

Hallo zusammen,
ich komme mal wieder nicht weiter und benötige eure Hilfe .

Was liegt an?
Ich habe verschiedene Checkboxen, bei denen folgendes passieren soll:

  1. Sobald eine Box gewählt wird und somit das checked gesetzt wurde, sollen die restlichen Boxen inaktiv werden und eine Klasse soll erstellt werden. (Info: soweit klappt es)
  2. Nun zu meinem Problem: Das Script soll noch überprüfen, ob eine Box bereits aktiv (checked gesetzt) ist. Sollte dies der Fall sein, soll direkt die zu erstellende Klasse direkt aktiv (erstellt) werden. Leider klappt es nicht bei mir.

Weiß jemand wie ich weitermachen muss?

Hier mein Code:

<form action="Kd_karte.php" method="post">
  <label class="styleClass">
    <input type="checkbox" name="branche[]" onClick="ckChange(this)" id="anlauf" value="ankaufdienste" <?PHP if($rowY->branche == "ankaufdienste"){echo "checked" ;} ?>>
    <span class="icon icon-animalsallowed"></span><br>
    Ankaufdienste
  </label>

  <label class="styleClass">
    <input type="checkbox" name="branche[]" onClick="ckChange(this)" id="gesundheit" value="Gesundheit und Wellness" <?PHP if($rowY->branche == "Gesundheit und Wellness"){echo "checked" ;} ?>>
    <span class="icon icon-pharmacy3"></span><br>
    Gesundheit und Wellness
  </label>

  <label class="styleClass">
    <input type="checkbox" name="branche[]" onClick="ckChange(this)" id="auto" value="Auto und Motorrad" <?PHP if($rowY->branche == "Auto und Motorrad"){echo "checked" ;} ?>>
    <span class="icon icon-car95"></span><br>
    Auto und Motorrad
  </label>
</form>
<script>
  function ckChange(ckType) {
    var ckName = document.getElementsByName(ckType.name);
    var checked = document.getElementById(ckType.id);

    if (checked.checked) {
      for (var i = 0; i < ckName.length; i++) {
        if (!ckName[i].checked) {
          ckName[i].disabled = true;
          $(".styleClass").addClass("opacityColor");
        }
        else {
          ckName[i].disabled = false;
        }
      }
    }
    else {
      for (var i = 0; i < ckName.length; i++) {
        ckName[i].disabled = false;
        $(".styleClass").removeClass("opacityColor");
      }
    }
  }
</script>

Zusatz: Es muss noch etwas geprüft werden: Sollte checked gesetzt sein, sollen die restlichen Boxen inaktiv gestellt werden.

So, jetzt sollte ich es haben. Ich hoffe, ihr versteht, was ich euch vermitteln möchte.

...zur Frage

Warum funktioniert es nicht Variablen bei PHP zu übergeben?

Hallo, auf der ersten PHP-Seite habe ich ein Formular welches nachdem man Submit gedrückt hat dir eine Html-Email schickt, wo auch der Name usw. drin steht den man bei dem Formular eingegeben hat. Das steht in der HTML email: (wen man auf "hier" drückt sollen die Daten die man im Fromular angegeben hat auf einer anderen Seite in eine .txt-Datei geschrieben werden)

<form method=\"get\" action=\"link \"> <input type=\"hidden\" value=\"$email\" name=\"email\" /> 
<input type=\"hidden\" value=\"$vname\" name=\"vname\" /> 
<input type=\"hidden\" value=\"$nname\" name=\"nname\" />
 <input type=\"hidden\" value=\"$code\" name=\"code\" /> 
<input type=\"hidden\" value=\"$geschlecht\" name=\"geschlecht\" />
 <input type=\"submit\" value=\"Hier\" /> 

auf der 2. Seite steht das:

$nr = date('sihdmY');
$mail = $_GET['email'];
 $vorn = $_GET['vname'];
 $gender = $_GET['geschlecht']; 
$nachn = $_GET['nname'];
$handle = fopen ( "speicher.txt", "a" );
 fwrite ( $handle, $mail );
 fwrite ( $handle, " | " );
 fwrite ( $handle, $gender ); 
fwrite ( $handle, " | " );
 fwrite ( $handle, $vorn ); fwrite ( $handle, " | " ); 
fwrite ( $handle, $nachn ); 
fwrite ( $handle, " || " );
 fwrite ( $handle, $nr );
 fwrite ( $handle, "\r\n");
 fclose ( $handle );
echo "Danke.";

exit;

Was ist das Problem? In die Text datei wird nur die Zahl von $nr reingeschrieben. Kann mir da jemand helfen? Danke im Voraus.

...zur Frage

Wo ist der Fehler in meinem PHP post code?

Hey, ich habe heute angefangen mit php rum zuspielen und finde meinen Fehler einfach nicht, ich hoffe mir kann jemand weiter helfen :)


<?php

$notiz = "";

if($_POST['name'] != "" && $_POST['nickname'] != "" && $_POST['gbdatum'] != "") {          mail("info@domain.de", "Spieler-Buch Eintrag von: " . $_POST['nickname'], $_POST['nickname'] . " hat das Formular zum Eintrag in das Spieler-Buch ausgefüllt. \n\n Daten:\nName: " . $_POST['vorname'] . " " . $_POST['name'] . "\nSpielername: " . $_POST['nick'] . "\nGeboren am: " . $_POST['gbdatum']);       } else if($_POST['formular'] == 'set') {     $notiz = "Fülle bitte alle Felder aus."; } ?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta name="language" content="de" />
        
        <style>
        
        </style>
    </head>
    <body>
        
        <h2>Spielerbuch-Formular</h2>
        
        <form action="formular.php" method="post">
            <input type="hidden" value="set" name="formular">
			<input type="hidden" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" name="ip">
            
            <input type="text" placeholder="Vorname" value="<?php echo $_POST['vorname']; ?>" name="vorname"><br>
            <input type="text" placeholder="Nachname" value="<?php echo $_POST['name']; ?>" name="name"><br>
            <input type="text" placeholder="Spielername" value="<?php echo $_POST['nick']; ?>" name="nick"><br>
            <input type="date" value="<?php echo $_POST['gbdatum']; ?>" name="gbdatum"><br><br>
            
            <input type="submit" value="send">
            <br><br>
            <h4><font color="red"><?php echo $notiz; ?></font></h4>
       </form>
        
    </body>
</html>

Wenn ich im Formular alle vier Sachen ausfülle, dann wird mir die $notiz angezeigt und die Mail geht nicht raus.

<?php

mail("info@kryziz-gaming.de", "Betreff", "Testnachricht")

?>

Das funktioniert, ist aber auch stumpf.

...zur Frage

Was möchtest Du wissen?