Heim Backend-Entwicklung PHP-Tutorial php代码兑现aes加密

php代码兑现aes加密

Jun 13, 2016 am 10:58 AM
function

php代码实现aes加密
发现php4的加密模块在php5的不被支持了,硬要加上这个模块会导致启动时候出现警告对话框。
于是花了一天时间将as3的加密类翻译成了php的,该加密类是google的开源项目
http://code.google.com/p/as3crypto/


<?phprequire_once ("PKCS5.php");require_once("AESKey.php");require_once("ECBMode.php");require_once("Hex.php");class Aes{	private $_pad;//填充方式	private $_mode;//加密类	/**	 * 构造函数	 * @param	base64keyString   密钥base64编码字符串	 */	public function Aes($base64keyString) 	{		$this->_pad = new PKCS5(); //为了与java保持一致,所以采用PKCS5填充		$key = Hex::string2ByteArray(base64_decode($base64keyString));		$this->_mode = new ECBMode(new AESKey($key), $this->_pad);		$this->_pad->setBlockSize($this->_mode->getBlockSize());	}			/**	 * 将明文加密为密文base64编码字符串	 * @param	plainSrc		 明文	 * @return	密文base64编码	 */	public function encrypt($plainSrc)	{		$src = Hex::string2ByteArray($plainSrc);		$src = $this->_mode->encrypt($src);				return base64_encode(Hex::ByteArray2String($src));	}		/**	 * 将base64编码字符串(密文)解密成 明文	 * @param	base64Src  密文base64编码字符串	 * @return	明文	 */	public function decrypt($base64Src)	{		$src = base64_decode($base64Src);		$src = $this->_mode->decrypt(Hex::string2ByteArray($src));		return Hex::byteArray2String($src);	}		/**	 * 释放内存	 */	public function dispose()	{		$this->_mode->dispose();	}}//var_dump(Hex::string2ByteArray(base64_decode("MK2X82eL6jkKbzvlJU1ZMR6rcKO+SBhmbPOmFD/2Mxw=")));$_aes = new Aes("MK2X82eL6jkKbzvlJU1ZMR6rcKO+SBhmbPOmFD/2Mxw=");//echo "=================<br>";$ret = $_aes->encrypt("1234567890abcdef1234567890abcdefaaafdsfsdffasfasfasfasdf");echo $ret;var_dump($_aes->decrypt($ret));?>
Nach dem Login kopieren


<?phprequire_once ("IPad.php");class PKCS5 implements IPad{	private $blockSize = 0;		public function PKCS5($blockSize=0) {		$this->blockSize = $blockSize;	}		public function pad($a)	{		$c = $this->blockSize-count($a)%$this->blockSize;		for ($i=0;$iblockSize;		if ($c!=0) throw new Exception("PKCS#5::unpad: ByteArray.length isn't a multiple of the blockSize");		$c = $a[$len-1];		array_splice($a,$len-$c,$c);		return $a;	}	public function setBlockSize($bs) 	{		$this->blockSize = $bs;	}}?>
Nach dem Login kopieren




<?phprequire_once ("ISymmetricKey.php");require_once("AESKeyInclude.php");require_once("Hex.php");class AESKey implements ISymmetricKey{		private $_keyByte;	private $_keyLength;	private $_nNr;	private $_stateByte;	private $_tempByte;	public function AESKey($key/*:ByteArray*/) {		$this->_tempByte = array();		$this->_stateByte = array();		$this->_keyLength = count($key);		$this->_keyByte = $key;		$this->expandKey();	}		// produce Nb bytes for each round	private function expandKey() 	{		$tmp0=0;		$tmp1=0;		$tmp2=0;		$tmp3=0;		$tmp4=0;		$idx=0;		$Nk = $this->_keyLength/4;		//echo("count:".$Nk."<br>".count($this->_keyByte)."<br>");		$this->_nNr = $Nk+6;		$_keyByte = $this->_keyByte;		$_nNr = $this->_nNr;		$Nb = AESKeyInclude::$Nb;		$Sbox = AESKeyInclude::$_Sbox;		$Rcon = AESKeyInclude::$_Rcon;				for( $idx = $Nk; $idx  6 && $idx % $Nk == 4 ) {				$tmp0 = $Sbox[$tmp0];				$tmp1 = $Sbox[$tmp1];				$tmp2 = $Sbox[$tmp2];				$tmp3 = $Sbox[$tmp3];			}				$_keyByte[4*$idx+0] = $_keyByte[4*$idx - 4*$Nk + 0] ^ $tmp0;			$_keyByte[4*$idx+1] = $_keyByte[4*$idx - 4*$Nk + 1] ^ $tmp1;			$_keyByte[4*$idx+2] = $_keyByte[4*$idx - 4*$Nk + 2] ^ $tmp2;			$_keyByte[4*$idx+3] = $_keyByte[4*$idx - 4*$Nk + 3] ^ $tmp3;		}		$this->_keyByte = $_keyByte;	}	public function getBlockSize()	{		return 16;	}		// encrypt one 128 bit block	public function encrypt($block, $index=0)	{		$_stateByte = &$this->_stateByte;		$_keyByte = &$this->_keyByte;		$Nb = AESKeyInclude::$Nb;		$_nNr = $this->_nNr;				$_stateByte = array();		$_stateByte = array_merge($_stateByte,array_slice($block,$index,$Nb*4));		$this->addRoundKey($_keyByte, 0);		for ( $round = 1; $round mixSubColumns();			} else {				$this->shiftRows();			}			$this->addRoundKey($_keyByte, $round * $Nb * 4);		}		return $_stateByte;	}		public function decrypt($block, $index=0)	{		$_stateByte = &$this->_stateByte;		$_keyByte = &$this->_keyByte;		$Nb = AESKeyInclude::$Nb;		$_nNr = $this->_nNr;				$_stateByte = array();		$_stateByte = array_merge($_stateByte,array_slice($block,$index,$Nb*4));				$this->addRoundKey($_keyByte, $_nNr*$Nb*4);		$this->invShiftRows();		for( $round = $_nNr; $round--; )		{			$this->addRoundKey( $_keyByte, $round*$Nb*4);			if ($round) {				$this->invMixSubColumns();			}		}		return $_stateByte;	}		public function dispose() {			}	// exchanges columns in each of 4 rows	// row0 - unchanged, row1- shifted left 1, 	// row2 - shifted left 2 and row3 - shifted left 3	protected function shiftRows()	{		$tmp = 0;			$_stateByte = &$this->_stateByte;		$Sbox = AESKeyInclude::$_Sbox;				// just substitute row 0		$_stateByte[0] = $Sbox[$_stateByte[0]]; $_stateByte[4] = $Sbox[$_stateByte[4]];		$_stateByte[8] = $Sbox[$_stateByte[8]]; $_stateByte[12] = $Sbox[$_stateByte[12]];			// rotate row 1		$tmp = $Sbox[$_stateByte[1]]; $_stateByte[1] = $Sbox[$_stateByte[5]];		$_stateByte[5] = $Sbox[$_stateByte[9]]; $_stateByte[9] = $Sbox[$_stateByte[13]]; $_stateByte[13] = $tmp;			// rotate row 2		$tmp = $Sbox[$_stateByte[2]]; $_stateByte[2] = $Sbox[$_stateByte[10]]; $_stateByte[10] = $tmp;		$tmp = $Sbox[$_stateByte[6]]; $_stateByte[6] = $Sbox[$_stateByte[14]]; $_stateByte[14] = $tmp;			// rotate row 3		$tmp = $Sbox[$_stateByte[15]]; $_stateByte[15] = $Sbox[$_stateByte[11]];		$_stateByte[11] = $Sbox[$_stateByte[7]]; $_stateByte[7] = $Sbox[$_stateByte[3]]; $_stateByte[3] = $tmp;			}		// restores columns in each of 4 rows	// row0 - unchanged, row1- shifted right 1, 	// row2 - shifted right 2 and row3 - shifted right 3	protected function invShiftRows ()	{		$tmp = 0;			$_stateByte = $this->_stateByte;		$InvSbox = AESKeyInclude::$_InvSbox;		// restore row 0		$_stateByte[0] = $InvSbox[$_stateByte[0]]; $_stateByte[4] = $InvSbox[$_stateByte[4]];		$_stateByte[8] = $InvSbox[$_stateByte[8]]; $_stateByte[12] = $InvSbox[$_stateByte[12]];			// restore row 1		$tmp = $InvSbox[$_stateByte[13]]; $_stateByte[13] = $InvSbox[$_stateByte[9]];		$_stateByte[9] = $InvSbox[$_stateByte[5]]; $_stateByte[5] = $InvSbox[$_stateByte[1]]; $_stateByte[1] = $tmp;			// restore row 2		$tmp = $InvSbox[$_stateByte[2]]; $_stateByte[2] = $InvSbox[$_stateByte[10]]; $_stateByte[10] = $tmp;		$tmp = $InvSbox[$_stateByte[6]]; $_stateByte[6] = $InvSbox[$_stateByte[14]]; $_stateByte[14] = $tmp;			// restore row 3		$tmp = $InvSbox[$_stateByte[3]]; $_stateByte[3] = $InvSbox[$_stateByte[7]];		$_stateByte[7] = $InvSbox[$_stateByte[11]]; $_stateByte[11] = $InvSbox[$_stateByte[15]]; $_stateByte[15] = $tmp;				$this->_stateByte = $_stateByte;	}		// recombine and mix each row in a column	protected function mixSubColumns ()	{		$_tempByte = array();//.length=0;		$Xtime2Sbox = AESKeyInclude::$_Xtime2Sbox;		$Xtime3Sbox = AESKeyInclude::$_Xtime3Sbox;		$_stateByte = &$this->_stateByte;		$Sbox = AESKeyInclude::$_Sbox;		// mixing column 0		$_tempByte[0] = $Xtime2Sbox[$_stateByte[0]] ^ $Xtime3Sbox[$_stateByte[5]] ^ $Sbox[$_stateByte[10]] ^ $Sbox[$_stateByte[15]];		$_tempByte[1] = $Sbox[$_stateByte[0]] ^ $Xtime2Sbox[$_stateByte[5]] ^ $Xtime3Sbox[$_stateByte[10]] ^ $Sbox[$_stateByte[15]];		$_tempByte[2] = $Sbox[$_stateByte[0]] ^ $Sbox[$_stateByte[5]] ^ $Xtime2Sbox[$_stateByte[10]] ^ $Xtime3Sbox[$_stateByte[15]];		$_tempByte[3] = $Xtime3Sbox[$_stateByte[0]] ^ $Sbox[$_stateByte[5]] ^ $Sbox[$_stateByte[10]] ^ $Xtime2Sbox[$_stateByte[15]];			// mixing column 1		$_tempByte[4] = $Xtime2Sbox[$_stateByte[4]] ^ $Xtime3Sbox[$_stateByte[9]] ^ $Sbox[$_stateByte[14]] ^ $Sbox[$_stateByte[3]];		$_tempByte[5] = $Sbox[$_stateByte[4]] ^ $Xtime2Sbox[$_stateByte[9]] ^ $Xtime3Sbox[$_stateByte[14]] ^ $Sbox[$_stateByte[3]];		$_tempByte[6] = $Sbox[$_stateByte[4]] ^ $Sbox[$_stateByte[9]] ^ $Xtime2Sbox[$_stateByte[14]] ^ $Xtime3Sbox[$_stateByte[3]];		$_tempByte[7] = $Xtime3Sbox[$_stateByte[4]] ^ $Sbox[$_stateByte[9]] ^ $Sbox[$_stateByte[14]] ^ $Xtime2Sbox[$_stateByte[3]];			// mixing column 2		$_tempByte[8] = $Xtime2Sbox[$_stateByte[8]] ^ $Xtime3Sbox[$_stateByte[13]] ^ $Sbox[$_stateByte[2]] ^ $Sbox[$_stateByte[7]];		$_tempByte[9] = $Sbox[$_stateByte[8]] ^ $Xtime2Sbox[$_stateByte[13]] ^ $Xtime3Sbox[$_stateByte[2]] ^ $Sbox[$_stateByte[7]];		$_tempByte[10]  = $Sbox[$_stateByte[8]] ^ $Sbox[$_stateByte[13]] ^ $Xtime2Sbox[$_stateByte[2]] ^ $Xtime3Sbox[$_stateByte[7]];		$_tempByte[11]  = $Xtime3Sbox[$_stateByte[8]] ^ $Sbox[$_stateByte[13]] ^ $Sbox[$_stateByte[2]] ^ $Xtime2Sbox[$_stateByte[7]];			// mixing column 3		$_tempByte[12] = $Xtime2Sbox[$_stateByte[12]] ^ $Xtime3Sbox[$_stateByte[1]] ^ $Sbox[$_stateByte[6]] ^ $Sbox[$_stateByte[11]];		$_tempByte[13] = $Sbox[$_stateByte[12]] ^ $Xtime2Sbox[$_stateByte[1]] ^ $Xtime3Sbox[$_stateByte[6]] ^ $Sbox[$_stateByte[11]];		$_tempByte[14] = $Sbox[$_stateByte[12]] ^ $Sbox[$_stateByte[1]] ^ $Xtime2Sbox[$_stateByte[6]] ^ $Xtime3Sbox[$_stateByte[11]];		$_tempByte[15] = $Xtime3Sbox[$_stateByte[12]] ^ $Sbox[$_stateByte[1]] ^ $Sbox[$_stateByte[6]] ^ $Xtime2Sbox[$_stateByte[11]];			/*		_stateByte.position=0;		_stateByte.writeBytes(_tempByte, 0, Nb*4);*/				$_stateByte = $_tempByte;				$this->_tempByte = $_tempByte;	}		// restore and un-mix each row in a column	protected function invMixSubColumns ()	{		$_tempByte = array();//.length=0;		$_stateByte = &$this->_stateByte;		$XtimeE = AESKeyInclude::$_XtimeE;		$XtimeB = AESKeyInclude::$_XtimeB;		$Xtime9 = AESKeyInclude::$_Xtime9;		$XtimeD = AESKeyInclude::$_XtimeD;		$InvSbox = AESKeyInclude::$_InvSbox;		$Nb = AESKeyInclude::$Nb;				// restore column 0		$_tempByte[0] = $XtimeE[$_stateByte[0]] ^ $XtimeB[$_stateByte[1]] ^ $XtimeD[$_stateByte[2]] ^ $Xtime9[$_stateByte[3]];		$_tempByte[5] = $Xtime9[$_stateByte[0]] ^ $XtimeE[$_stateByte[1]] ^ $XtimeB[$_stateByte[2]] ^ $XtimeD[$_stateByte[3]];		$_tempByte[10] = $XtimeD[$_stateByte[0]] ^ $Xtime9[$_stateByte[1]] ^ $XtimeE[$_stateByte[2]] ^ $XtimeB[$_stateByte[3]];		$_tempByte[15] = $XtimeB[$_stateByte[0]] ^ $XtimeD[$_stateByte[1]] ^ $Xtime9[$_stateByte[2]] ^ $XtimeE[$_stateByte[3]];			// restore column 1		$_tempByte[4] = $XtimeE[$_stateByte[4]] ^ $XtimeB[$_stateByte[5]] ^ $XtimeD[$_stateByte[6]] ^ $Xtime9[$_stateByte[7]];		$_tempByte[9] = $Xtime9[$_stateByte[4]] ^ $XtimeE[$_stateByte[5]] ^ $XtimeB[$_stateByte[6]] ^ $XtimeD[$_stateByte[7]];		$_tempByte[14] = $XtimeD[$_stateByte[4]] ^ $Xtime9[$_stateByte[5]] ^ $XtimeE[$_stateByte[6]] ^ $XtimeB[$_stateByte[7]];		$_tempByte[3] = $XtimeB[$_stateByte[4]] ^ $XtimeD[$_stateByte[5]] ^ $Xtime9[$_stateByte[6]] ^ $XtimeE[$_stateByte[7]];			// restore column 2		$_tempByte[8] = $XtimeE[$_stateByte[8]] ^ $XtimeB[$_stateByte[9]] ^ $XtimeD[$_stateByte[10]] ^ $Xtime9[$_stateByte[11]];		$_tempByte[13] = $Xtime9[$_stateByte[8]] ^ $XtimeE[$_stateByte[9]] ^ $XtimeB[$_stateByte[10]] ^ $XtimeD[$_stateByte[11]];		$_tempByte[2]  = $XtimeD[$_stateByte[8]] ^ $Xtime9[$_stateByte[9]] ^ $XtimeE[$_stateByte[10]] ^ $XtimeB[$_stateByte[11]];		$_tempByte[7]  = $XtimeB[$_stateByte[8]] ^ $XtimeD[$_stateByte[9]] ^ $Xtime9[$_stateByte[10]] ^ $XtimeE[$_stateByte[11]];			// restore column 3		$_tempByte[12] = $XtimeE[$_stateByte[12]] ^ $XtimeB[$_stateByte[13]] ^ $XtimeD[$_stateByte[14]] ^ $Xtime9[$_stateByte[15]];		$_tempByte[1] = $Xtime9[$_stateByte[12]] ^ $XtimeE[$_stateByte[13]] ^ $XtimeB[$_stateByte[14]] ^ $XtimeD[$_stateByte[15]];		$_tempByte[6] = $XtimeD[$_stateByte[12]] ^ $Xtime9[$_stateByte[13]] ^ $XtimeE[$_stateByte[14]] ^ $XtimeB[$_stateByte[15]];		$_tempByte[11] = $XtimeB[$_stateByte[12]] ^ $XtimeD[$_stateByte[13]] ^ $Xtime9[$_stateByte[14]] ^ $XtimeE[$_stateByte[15]];			for( $i=0; $i _stateByte;		for( $idx = 0; $idx _keyLength);	}}?>
Nach dem Login kopieren


<?phprequire_once ("IMode.php");require_once("ICipher.php");require_once("ISymmetricKey.php");require_once("PKCS5.php");class ECBMode implements IMode{	private $_key;	private $_padding;		public function ECBMode($key/*:ISymmetricKey*/, $padding/*:IPad*/ = NULL) 	{		$this->_key = $key;		if ($padding == NULL) {			$padding = new PKCS5($key->getBlockSize());		} else {			$padding->setBlockSize($key->getBlockSize());		}		$this->_padding = $padding;	}		public function getBlockSize() {		return $this->_key->getBlockSize();	}		public function encrypt($src) 	{		$src = $this->_padding->pad($src);		$blockSize = $this->_key->getBlockSize();		$dst = array();		$len = count($src);		for ($i=0;$i_key->encrypt($tmp);			$dst = array_merge($dst,$ret);		}		return $dst;	}		public function decrypt($src) 	{		$blockSize = $this->_key->getBlockSize();				$len = count($src);		// sanity check.		if ($len % $blockSize!=0) {			throw new Exception("ECB mode cipher length must be a multiple of blocksize ".$blockSize);		}				$tmp = array();		$dst = array();				for ($i=0;$i_key->decrypt($tmp);			$dst = array_merge($dst,$ret);		}		$dst = $this->_padding->unpad($dst);		return $dst;	}		public function dispose() 	{			}		public function toString() {		return $this->_key->toString()."-ecb";	}}?>
Nach dem Login kopieren



<?phpclass Hex{	static function string2ByteArray($src)	{		//$hex = bin2hex($src);		$ret = array();		$len = strlen($src);		for($i = 0; $i<$len; ++$i)		{			$ret[] = ord($src[$i]);		}		return $ret;	}		static function byteArray2String($src)	{		$ret = "";		$len = count($src);		for($i = 0; $i<$len; ++$i)		{			$ret .= chr($src[$i]);		}				return $ret;	}}?>
Nach dem Login kopieren



<?phpinterface ICipher{	function getBlockSize();	function encrypt($src);	function decrypt($src);	function dispose();	function toString();}?>
Nach dem Login kopieren



<?phprequire_once ("ICipher.php");interface IMode extends ICipher{}?>
Nach dem Login kopieren



<?phpinterface IPad{	/**	 * Add padding to the array	 */	function pad($a);	/**	 * Remove padding from the array.	 * @throws Error if the padding is invalid.	 */	function unpad($a);	/**	 * Set the blockSize to work on	 */	function setBlockSize($bs);}?>
Nach dem Login kopieren


<?phpinterface ISymmetricKey{	/**	 * Returns the block size used by this particular encryption algorithm	 */	function getBlockSize();	/**	 * Encrypt one block of data in "block", starting at "index", of length "getBlockSize()"	 */	function encrypt($block, $index);	/**	 * Decrypt one block of data in "block", starting at "index", of length "getBlockSize()"	 */	function decrypt($block, $index);	/**	 * Attempts to destroy sensitive information from memory, such as encryption keys.	 * Note: This is not guaranteed to work given the Flash sandbox model.	 */	function dispose();		function toString();}?>
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet Funktion? Was bedeutet Funktion? Aug 04, 2023 am 10:33 AM

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

Was ist der Zweck der Funktion „enumerate()' in Python? Was ist der Zweck der Funktion „enumerate()' in Python? Sep 01, 2023 am 11:29 AM

In diesem Artikel lernen wir die Funktion enumerate() und den Zweck der Funktion „enumerate()“ in Python kennen. Was ist die Funktion enumerate()? Die Funktion enumerate() von Python akzeptiert eine Datensammlung als Parameter und gibt ein Aufzählungsobjekt zurück. Aufzählungsobjekte werden als Schlüssel-Wert-Paare zurückgegeben. Der Schlüssel ist der Index, der jedem Element entspricht, und der Wert sind die Elemente. Syntax enumerate(iterable,start) Parameter iterable – Die übergebene Datensammlung kann als Aufzählungsobjekt namens iterablestart zurückgegeben werden – Wie der Name schon sagt, wird der Startindex des Aufzählungsobjekts durch start definiert. wenn wir es ignorieren

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Mar 16, 2024 am 09:03 AM

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem. Wenn Entwickler MySQL verwenden, müssen sie häufig gespeicherte Prozeduren erstellen und verwalten. Die MySQL.proc-Tabelle ist eine sehr wichtige Systemtabelle. Sie speichert Informationen zu allen gespeicherten Prozeduren in der Datenbank, einschließlich des Namens, der Definition, der Parameter usw. der gespeicherten Prozeduren. In diesem Artikel erklären wir ausführlich die Rolle und Funktionalität der MySQL.proc-Tabelle

Die Verwendung und Funktion der Vue.use-Funktion Die Verwendung und Funktion der Vue.use-Funktion Jul 24, 2023 pm 06:09 PM

Verwendung und Funktion von Vue.Funktion verwenden Vue ist ein beliebtes Frontend-Framework, das viele nützliche Features und Funktionen bietet. Eine davon ist die Vue.use-Funktion, die es uns ermöglicht, Plugins in Vue-Anwendungen zu verwenden. In diesem Artikel werden die Verwendung und Funktion der Vue.use-Funktion vorgestellt und einige Codebeispiele bereitgestellt. Die grundlegende Verwendung der Vue.use-Funktion ist sehr einfach. Rufen Sie sie einfach auf, bevor Vue instanziiert wird, und übergeben Sie das Plugin, das Sie verwenden möchten, als Parameter. Hier ist ein einfaches Beispiel: //Plugin vorstellen und verwenden

Was ist die Verwendung der js-Funktion? Was ist die Verwendung der js-Funktion? Oct 07, 2023 am 11:25 AM

Die Verwendung der js-Funktion ist: 1. Funktion deklarieren; 3. Funktionsparameter; 6. Funktion als Parameter;

file_exists()-Funktion in PHP file_exists()-Funktion in PHP Sep 14, 2023 am 08:29 AM

Die Methode file_exists prüft, ob eine Datei oder ein Verzeichnis existiert. Es akzeptiert als Argument den Pfad der zu überprüfenden Datei oder des Verzeichnisses. Hier erfahren Sie, wofür es verwendet wird: Es ist nützlich, wenn Sie wissen müssen, ob eine Datei vorhanden ist, bevor Sie sie verarbeiten. Auf diese Weise können Sie beim Erstellen einer neuen Datei mithilfe dieser Funktion feststellen, ob die Datei bereits vorhanden ist. Syntax file_exists($file_path) Parameter file_path – Legen Sie den Pfad der Datei oder des Verzeichnisses fest, dessen Existenz überprüft werden soll. Erforderlich. Gibt die Methode file_exists() zurück. Gibt „TrueFalse“ zurück, wenn die Datei oder das Verzeichnis existiert, wenn die Datei oder das Verzeichnis nicht existiert. Beispiel: Lassen Sie uns eine Prüfung für die Datei „candidate.txt“ sehen und auch, ob die Datei vorhanden ist

So verwenden Sie SOA-Funktionen in PHP So verwenden Sie SOA-Funktionen in PHP May 18, 2023 pm 01:10 PM

Mit der Entwicklung des Internets ist SOA (serviceorientierte Architektur) zu einer wichtigen technischen Architektur in heutigen Systemen auf Unternehmensebene geworden. Dienste in der SOA-Architektur können wiederverwendet, neu organisiert und erweitert werden und vereinfachen gleichzeitig den Systementwicklungs- und Wartungsprozess. Als weit verbreitete Web-Programmiersprache stellt PHP auch einige Funktionsbibliotheken zur Implementierung von SOA zur Verfügung. Als nächstes werden wir detailliert beschreiben, wie SOA-Funktionen in PHP verwendet werden. 1. Das Grundkonzept von SOA ist eine verteilte Systementwicklungsidee und -architektur.

Funktion „clearstatcache()' in PHP Funktion „clearstatcache()' in PHP Sep 07, 2023 am 09:33 AM

Mit der Funktion „clearstatcache()“ wird der Dateistatus-Cache geleert. PHP speichert die von den folgenden Funktionen zurückgegebenen Informationen zwischen: −stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms() Was zu tun Um eine bessere Leistung zu erzielen. Syntax voidclearstatecache() Parameter NA Rückgabewert clearstatcache(

See all articles