Bagaimana mempertahankan nilai setelah mengirimkan formulir di php?

Di bagian sebelumnya, Anda telah mengikuti dan membuat formulir HTML. Anda telah mempelajari cara mendapatkan teks dari kotak teks pada formulir, tetapi ada masalah

Ketika bentuk dasar. formulir php dikirimkan, detail yang dimasukkan pengguna dihapus. Anda akan mendapatkan VALUE yang disetel di HTML. Bagi kami, nama pengguna terus muncul di kotak teks saat tombol diklik. Anda dapat menyimpan data yang dimasukkan pengguna dengan cukup mudah

Skrip Anda sekarang akan terlihat seperti yang ada di tautan di bawah ini. Jika tidak salin dan tempel skrip ini, dan ujilah di server Anda. (Simpan skrip sebagai basicForm. php. )

Formulir dasar. skrip php

Jika Anda melihat atribut VALUE kotak teks di HTML dari skrip di atas, Anda akan melihat bahwa itu disetel ke "nama pengguna". Karena formulir diposkan kembali ke dirinya sendiri, nilai ini akan terus muncul kembali di kotak teks saat halaman dikirimkan. Lebih buruk lagi, jika Anda membiarkan atribut Value kosong maka semua yang dimasukkan pengguna akan hilang. Ini bisa sangat mengganggu, jika Anda meminta pengguna untuk mencoba lagi. Lebih baik POST kembali nilai yang dimasukkan pengguna

Untuk memposting detail kembali ke formulir, dan dengan demikian menyimpan data yang telah diketik pengguna, Anda dapat menggunakan ini

NILAI=""

Dengan kata lain, atribut VALUE sekarang menjadi baris kode PHP. Baris kodenya hanya ini

cetak $namapengguna ;

?>

Agak sulit dibaca, karena semuanya dalam satu baris

Anda juga perlu mengubah kode PHP Anda di bagian HEAD untuk memasukkan pernyataan lain

if (isset($_POST['Submit1'])) {

$namapengguna = $_POST['namapengguna'];

if ($username == "letmein") {

print ("Selamat datang kembali, sobat. ");

}
kalau tidak {

print ("Anda bukan anggota situs ini");

}

}
kalau tidak {

$namapengguna ="";

}

Dalam pernyataan lain di akhir, kami hanya mengatur nilai variabel yang disebut $username ketika tombol TIDAK diklik, saya. e. saat halaman di-refresh

Namun, ada beberapa masalah keamanan yang terkait dengan kotak teks (dan elemen formulir lainnya). Jadi kita akan melihat cara yang lebih aman untuk menangani ini di bagian selanjutnya

Saya tidak berpikir itu ada hubungannya dengan penyegaran Meta, tetapi tidak ada salahnya bagi saya untuk mencobanya. Secara pribadi, saya lebih suka menampilkan bidang yang hilang tepat di atas formulir kontak daripada formulirnya hilang dan kesalahan muncul begitu saja sehingga Anda terpaksa mengklik kembali pada browser. Sebenarnya, contoh skrip yang saya gunakan benar-benar MENUNJUKKAN hal itu terjadi, namun saya sepertinya tidak dapat mencapai hasil itu. Jangan ragu untuk melihat contoh dan kode yang saya gunakan jika Anda tertarik

( kelas validator formulir )

Bedanya form saya index. php, dan aksinya adalah email. php. Contoh orang itu memiliki kode validasi dan formulir sebenarnya dalam dokumen yang sama (tindakan formulirnya adalah hal PHP_SELF), dan saya menduga itu mungkin ada hubungannya dengan itu

Ah baiklah, terima kasih teman-teman, jika ada bantuan lain yang bisa Anda tawarkan meskipun itu sangat dihargai

Bagaimana mempertahankan nilai setelah mengirimkan formulir di php?

Saya memiliki ide bagus tentang apa yang perlu dilakukan, tetapi hanya sedikit pengetahuan tentang cara melakukannya. Pertama, saya memposting seluruh kelas validator, di mana menurut saya ini harus terjadi

<?php
# =================================================================== #
#
# iMarc PHP Library
# Copyright 2002, iMarc, LLC
#
# @version: 1.4
# @last_update: 2003-01-01
# @description: Form Validation Functions
#
# @changes: v1.4 - Added isset() when validating (compatibale with PHP error notices)
#
# =================================================================== #
/*
	METHODS:
		validate_fields() 	- Validates a comma-separated string of $required_fields
		create_error() 	- Private class function to handle errors
*/
# ------------------------------------------------------------------- #
# VALIDATOR CLASS
# ------------------------------------------------------------------- #
class validator {
	var $error, $error_message;		// (string) HTML formatted error message
	var $error_array = array();		// (array)	Error

	# ----------------------------------- #
	# FUNCTION: 	validate_fields
	# DESCRIPTION: 	Validates a comma-separated string of $required_fields
	#
	# ARGS: 		$required_fields	(string) comma separated string of required form field names
	#
	# RETURNS:		TRUE if all form fields are not NULL, FALSE if at least one fields is NULL.
	# ----------------------------------- #
	function validate_fields($required_fields='') {
		if (!$required_fields) {
			return true;
		}
		$__errors = array();

		// Delete all spaces from the field names and place the them in an array.
		$__fields = explode (",", str_replace(" ", "", $required_fields));
		foreach ($__fields as $__current_field) {	
			if (trim($__current_field)) {
				if (strstr($__current_field, "||")) {
	
					/* * * *  "OR" fields * * * */
					
					// this_field||that_field - double pipe separated field names will check <this_field> or <that_field>
					$__error      = false;
					$__no_error   = false;
					$__sub_fields = explode("||", $__current_field);
		
					foreach ($__sub_fields as $__current_sub_field) {
						$__current_sub_field = trim($__current_sub_field);
						
						settype($_REQUEST[$__current_sub_field], "string");
						
						if (!$__no_error && isset($_REQUEST[$__current_sub_field]) && !strlen(trim($_REQUEST[$__current_sub_field]))) {
							$__error      = true;
						} else {
							$__no_error   = 1;
							$__error      = false;
						}
					}

					if ($__error) {
						$__errors[] = $__current_field;
					}
				} else {
					
					/* * * *  Regular fields * * * */
					
					// This separates regular single fields and makes them global variables
					$__current_field = trim($__current_field);				
					settype($_REQUEST[$__current_field], "string");

					if (isset($_REQUEST[$__current_field]) && !strlen(trim($_REQUEST[$__current_field]))) {
						$__errors[] = $__current_field;
						
						foreach ($__current_field)
						{
							$_SESSION[$__current_field] = ;
						}
						
					}
				}
			}
		}
		
		if (count($__errors)) {
			$this->create_error($__errors, "validate_fields");
			return FALSE;
		} else {
			return TRUE;
		}
	}

/* Private */
	# ----------------------------------- #
	# FUNCTION: 	create_error
	# DESCRIPTION: 	Creates error messages
	#
	# ARGS: 		$error		(mixed)  error message[s]
	# 				$type		(string) type of error
	#
	# RETURNS:		VOID
	#				Sets $obj->error and $obj->error_array
	# ----------------------------------- #
	function create_error($error, $type='') {
		$this->error = ereg_replace("<br>$", "", $this->error);
		
		if ($type == "validate_fields") {
			$r = "<b>You have not filled in all of the necessary fields!  Please fill in the following:</b><br>\
";
			foreach ($error as $v) {
				$i  = 1;
				$r .= "&nbsp;&nbsp;&nbsp;•&nbsp;";
				$v_array = explode("||", $v);
				foreach ($v_array as $c) {
					if (trim($c)) {
						if ($i > 1) { $r .= " <b>or</b> "; }
						$missing_fields[] = $c;
						$r .= ucwords(eregi_replace("_", " ", $c));
						$i++;
					}
					
				}
				echo "<a href=\\"../index.php\\">index.php</a>";
				$r .= "<br>\
";
			}
			$this->error .= $r;
			$this->error_array['missing_fields'] = $missing_fields;
		
		} elseif ($type == "message") {
			if (!$this->error_array['message']) {
				$this->error .= "<b>The following errors occured:</b><br>\
";
			}
			$this->error .= "&nbsp;&nbsp;&nbsp;•&nbsp;" . $error . "<br>\
";
			$this->error_array['message'][] = $missing_fields;
		}
		$this->error .= "<br>";
		$this->error_message = $this->error;
	}
}

/*
<readme>
	
	Validator Class is a PHP object that can be used to validate
	the presence of HTML form data.
	
	By "validating", the function simply checks if a variable is
	NOT NULL. The class is intended to be called AFTER the end-user
	has submitted an HTML form.
	
	The class is first initiated, then the validate_fields function
	is called by passing the field names of all the required form
	fields. If any of the variables (field names) are NULL the
	function returns FALSE, along with an error message of which
	fields are null. If all the variables are NOT NULL, the function
	returns TRUE.
	
	# --------------------------------------------------------------- #
	# VALIDATOR CLASS USAGE
	# --------------------------------------------------------------- #
	- Start a new instance of the object:
	  $my_validator = new validator();
	
	- Check for the presence of data in one variable named $my_variable
	  $my_validator->validate_fields("my_variable");
	
	- Check for the presence of data in three variables
	  named $first_name, $last_name, and $email
	  $my_validator->validate_fields("first_name, last_name, email");
	
	- Check for the presence of data in at least one check box. There
	  are 3 checkboxes on the form ($ch_1, $ch_2, and $ch_3)
	  $my_validator->validate_fields("ch_1||ch_3||ch_3");
	
	- Check for the presence of data in at least one check box,

	  AND each of 2 text fields:
	  $my_validator->validate_fields("ch_1||ch_3||ch_3, text_1, text_2");
	
	- Printing Errors
		if (!$my_validator->validate_fields("last_name, email")) {
			echo $my_validator->error;
		} else {
			...
		}
	
	# --------------------------------------------------------------- #
	# VALIDATOR CLASS SET UP
	# --------------------------------------------------------------- #
	The only set up is to include this file on the page that you're
	using it

</readme>

<license>

	Copyright (c) 2002, iMarc LLC
	All rights reserved.
	
	Redistribution and use in source and binary forms, with or without
	modification, are permitted provided that the following conditions
	are met:
	
	*	Redistributions of source code must retain the above copyright
	    notice, this list of conditions and the following disclaimer.
	*	Redistributions in binary form must reproduce the above
	    copyright notice, this list of conditions and the following
	    disclaimer in the documentation and/or other materials
	    provided with the distribution.
	*	Neither the name of iMarc LLC nor the names of its
	    contributors may be used to endorse or promote products
	    derived from this software without specific prior
	    written permission.
	
	
	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
	CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
	DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
	BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
	EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
	TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
	ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
	OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
	OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
	POSSIBILITY OF SUCH DAMAGE.

</license>

*/
?>

Sekarang, yang perlu saya lakukan adalah membuat variabel sesi untuk setiap masukan yang telah dimasukkan pengguna (btw, saya memberikan tautan kembali ke indeks. php untuk mencegah penggunaan tombol kembali), jadi ini adalah kode yang saya tempatkan untuk itu (itu juga ada di kode di atas, tetapi hanya agar semuanya sedikit lebih fokus)

					// This separates regular single fields and makes them global variables
					$__current_field = trim($__current_field);				
					settype($_REQUEST[$__current_field], "string");

					if (isset($_REQUEST[$__current_field]) && !strlen(trim($_REQUEST[$__current_field]))) {
						$__errors[] = $__current_field;
						
						foreach ($__current_field)
						{
							$_SESSION[$__current_field] = ;
						}
						
					}
_

Saya memasukkan bagian depan, dan intinya adalah untuk setiap nama bidang, buat variabel sesi dengan nama bidang itu dan tetapkan nilai sebenarnya dari kotak teks ( input pengguna ) ke variabel itu. Masalahnya adalah, saya tidak tahu bagaimana cara mengeluarkan input pengguna untuk menetapkannya. Bantuan apa pun akan sangat dihargai

… baiklah, tapi ini akan menjadi gila = / Skrip pertama untuk fungsi surat saya, skrip kedua untuk validasi sisi server saya, dan tindakan formulir saya untuk formulir html saya adalah skrip surat ( surat. php ). Ini dia

Bagaimana Anda menjaga nilai setelah mengirimkan formulir?

Daripada mengirimkan formulir melalui pengiriman formulir, Anda dapat menggunakan permintaan AJAX untuk mendapatkan nilai dalam input teks dan meneruskannya ke kode Anda untuk melakukan apa pun yang ingin Anda lakukan dengan itu . Dengan cara ini formulir akan tetap ada dan nilainya juga akan ada di input teks. . This way the form will still be there and the value will also be there in the text input.

Bagaimana cara mendapatkan nilai formulir yang dikirimkan dalam PHP?

Gunakan metode isset() di PHP untuk menguji apakah form berhasil atau tidak dikirim . Dalam kode, gunakan fungsi isset() untuk memeriksa metode $_POST['submit'].

Bagaimana Anda mencegah formulir mengosongkan bidang saat dikirim?

Anda dapat menggunakan metode preventDefault dari objek acara. Simpan jawaban ini

Bagaimana cara menyimpan data dalam formulir setelah me-refresh HTML?

Cara termudah untuk memuat ulang halaman saat ini tanpa kehilangan data formulir, gunakan WebStorage di mana Anda memiliki -persistent storage (localStorage) atau berbasis sesi (sessionStorage) yang tetap berada di memori hingga . jendela. onload = function() {var name = localStorage. . window. onload = function() { var name = localStorage.