recherche
Maisondéveloppement back-endtutoriel phpPHP的base64_decode及写入mysql前的转义

我看到这个函数解码后返回一个string。
现在我编码前是一个二进制文件流,从图像文件读取来的。如果用这个函数解码并赋值给一个变量,那么应该默认就是一个string变量了。string变量可以存储二进制文件流吗?如果不能,应该怎么做,才能正确解码呢?

另外一个问题是,解码后要将这个二进制流存入到mysql的一个longblob字段里面,我需要对哪些字符进行转义?PHP是不是有专门的函数来一次性实现这个转义的?

补充一下我所用的编码和解码方式:

编码部分(VC端)

char buffer[102400];  //BUF_SIZE大小自己定义DWORD length;//照片图片FILE * pFile = fopen("photo.bmp", "rb");int img = fread(buffer, sizeof(char), 102400, pFile);//将文件二进制流读入到buffer中fclose(pFile);CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,NULL,&length);//获取存放编码后字串所需长度ImgString = new TCHAR[length];//ImgString是要发送给PHP的字串,根据上面获取的长度,初始化该字串length--;//减去最后字串结束符的位置CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,ImgString,&length);//向ImgString里面存放buffer的base64编码


解码并写入数据库部分(PHP+Mysql)

$face = addslashes(base64_decode(trim($_REQUEST['face'],"'")));$query = "update index_base set face=$face where id=$bid";$result = mysql_query($query);


回复讨论(解决方案)

印象中二进制文件和字符串没什么不同啊..

转义用addslashes或者mysql_real_escape_string

我得到的出错提示:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0' at line 1

印象中二进制文件和字符串没什么不同啊..

转义用addslashes或者mysql_real_escape_string


。。。二进制里面很多字串结束符的啊

那个出错提示里的错误位置,比mysql请求语句里面尝试写入的二进制流要短得多啊,不是已经转义过了吗,怎么还会截断?

请求里面是这个:
face=BMΗ\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 RZp?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????{??!0 \0\0 RZp??????????????w\\?|???\'?+??????????????????.?[?.+?{???z?z???????np?.0w|?????????????290ryp????|L?\\?|}??.??N???? 1?\00Q\0?q???1! ?`?pP?`@?P0?@ ?P1\0PA pa`??`??`??`??`??`??\0\0?P`?PP?PP?@@?0@? 0? 0? ? ? ? 0?0A\0@Q`Q pa0?qP??`??p??`??`??`??q\0?Q\0?a?……………………后面还有好长

行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


即使不解码、不转义,也是错的。

Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcID' at line 1Whole query: update index_base set cardtype=1, name='杨妍', sex='0', nationality='汉', birth='19850906', address='南京市鼓楼区广州路213-1号',expiration='20210602', expirebegin='20110602',  cardid='321283198509060027',issued='南京市公安局鼓楼分局',SAMID= '05.03-20131218-0001645552-2769328138',IINSNDN='0000000000000000',face='Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcIDwYGDgUFDgUFEAQFDwMEDgIDDQECDQECDQECDgIDDwMEEAQFEQYFEgcGEwgHFQoJFgsKFwwLFg4MFg8NGRIQHBUTHBcVHxoYHBYXGhMXFw8XFwsYDQgYBAUZUlpwo7DJqLXOrbnVsr7at8PftsLetsHftcDet8DeusPhvcbkwMnnw8vrxMzsxc3vxs7wyNDyxc3vwsrsvsbou8PlusLiucHht7/ftr7et8DeucLgusPhu8TiusPhucLguMHft8DeuMHfucLgusPhu8Tiu8XhvMbivcfjwMjkwcnlwsrmw8vnxMzoxc7nx9DpydLry9Ttoam/e4CTHSEwAwUQDxAXHBseExISDQgGDAcFDQYEDAUDDAQCDQUDEAUEEgcGFgkIFgkIFgkIFgkIFgkIFgkIAAAQBwgPBgYOBQUOBQUQBAUPAwQOAgMNAQINAQINAQIOAgMPAwQQBAURBgUSBwYTCAcVCgkWCwoXDAsWDgwWDw0ZEhAcFRMcFxUfGhgcFhcaExcXDxcXCxgNCBgEBRlSWnCjsMmotc6tudWyvtq3w9 2wt62wd 1wN63wN66w G9xuTAyefDy vEzOzFze/GzvDI0PLFze/Cyuy xui7w W6wuK5weG3v9 2vt63wN65wuC6w G7xOK6w G5wuC4wd 3wN64wd 5wuC6w G7xOK7xeG8xuK9x PAyOTByeXCyubDy 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 G x XAyefCy nEzevGzu7Gzu7GzvDGzvDHz/HFze/EzO7Dy 3CyuzCyurDy vEzOzFze3EzevEzevDzOrDzOrByui/yOa9xuS7xOK6w G5wuC3wN62v92zvdmwutatt9OttdGuttKvt9OwuNSxudWwudKvuNGut9Cut9CGjqRiZ3oPEyIAAQwAAQgDAgUIBwcQCwkOCQcOBwUMBQMMBAINBQMQBQQRBgUUBwYUBwYUBwYUBwYUBwYUBwYAAAsDBAsDAwwEBAwEBA0FBQ0FBQ0FBQ0FBQ0FBQwEBA0EBAwDAw4CAw4DAg4DAg8EAxAFBBEGBRIHBhIKCBMMChUODBcQDhcSEBoVExIPDwwICwkGDQgDDyAeLnl7j4qSqJypwqGux6ayzqq20q 717K 2rXA3rjD4b3G5L7H5cDJ58LL6cTM7MPL68PL7cPL7cPL7cLK7MHJ68DI6sDI6sHJ6cLK6sPL68XN7cTN68PM6sPM6sPM6sHK6MDJ577H5b3G5LzF47vE4rrD4brD4bfB3bS 2rG717G51bG51bK61rK61rO716 40ay1zqmyy6ewyX2Fm1ZbbhYaKQAACAAABQEAAwYFBQ4JBwwHBQ0GBAwFAw0FAw0FAxAFBBEGBRQHBhQHBhQHBhQHBhQHBhQHBgAACQMECgQEDQUFDgYGDwcHDwcHDwcHDwcHDwcHDgYGDgUFDQQEDgIDDgMCDgMCDgMCDgMCEAUEEgcGEgoIFAwKFQ4MFxAOGRIQHBUTFA4PDQkMCgcOCQQQJCIygYOXj5etnqvEoq/Ip7PPq7fTsLzYsr7atcDeuMPhvcbkvsflv8jmwMnnwsrqwcnpwcnrwMjqwMjqv8fpv8fpvsbovsbov8fnwMjowsrqxMzsw8zqw8zqw8zqw8zqwsvpwcrowMnnwMnnv8jmvsflvsflvsflu8XhucPftsDctr7atr7atr7atb3Ztb3Zr7jRqrPMpa7HoKnCc3uRSk9iHyMyAAAIAAAFAQADBQQEDQgGDAcFDQYEDQYEDgYEDgYEEAUEEAUEEwYFEwYFEwYFEwYFEwYFEwYFAAAGAwMHBAMKBAQKBAQNBQUNBQUNBQUNBQUNBQUMBAQMBAQMAwMNAQINAgENAgENAgEOAwIPBAMRBgURCQcTCwkTDAoUDQsWDw0YEQ8PDAwJBwoHBQwHAw8eHy54fZCKlKmdqsOhrsemss6qttKuutaxvdm0v922wd 7xOK8xeO9xuS x XAyOi/x e xui9xee9xee9xee9xee8xOa8xOa9xeW/x fAyOjCyurCy nCy nByujByujAyee/yOa x W9xuS9xuS9xuS9xuS x W7xeG5w9 3wd23v9u2vtq2vtq1vdm1vdmut9Coscqiq8Scpb5qcog7QFMYHCsAAAgAAAUBAAMEAwMLBgQLBgQNBgQNBgQOBgQOBgQQBQQQBQQSBQQSBQQSBQQSBQQSBQQSBQQAAAUCAgYDAgkDAwoEBAsFBQsFBQ0FBQ0FBQ0FBQwEBAsDAwsCAgwAAQwBAA0CAQ0CAQ4DAg8EAxAFBBEGBRMIBxIKCBILCRMMChQNCwwJCQcFCAUDCgQBDRgbKnF2iYaQpZypwqCtxqSwzKi00K251a 717K927XA3rrD4bvE4rzF473G5L7G5r3F5bzE5rvD5bvD5bvD5bvD5bvD5bvD5bzE5L7G5sDI6MLK6sHK6MDJ58DJ58DJ577H5b3G5LzF47vE4rzF473G5L3G5L7H5bzG4rrE4LjC3rjA3Le/27a 2rW92bW92a630KewyZ owZihumBofiswQxAUIwAACAAABQEAAwMCAgkEAgkEAgwFAwwFAw4GBA4GBBAFBBAFBBIFBBIFBBIFBBIFBBIFBBIFBAAAAgEBAwIBBgMCBwQDCAUECAUECgQECgQEDAQECwMDCwMDCQEBCQAACgIADQIBDgMCDwQDDwQDEAUEEAUEEQYFDwcFDwgGEAkHEQoICQYGBAIFAgEIAQAMExYlaW6BgoqgnKfAnqvEo6/Lp7PPq7fTrrrWsbzatL/ducLgusPhu8Tiu8TivMTku8PjusLkucHjuMDiuMDiuMDiuMDiucHju8PjvcXlv8fnwcnpwMnnv8jmvsflvsflvMXju8TiusPhucLgusPhvMXjvcbkv8jmvMbiusTguMLeuMDct7/btr7atb3Ztb3ZrLXOpK3GnKW lJ22Vl50GyAzCQ0cAAAIAAAFAQADAwICCAMBCAMBCwQCDAUDDgYEDgYEEAUEDwQDEQQDEQQDEQQDEQQDEQQDEQQDAAABAAABAAACAQADAgEHBAMHBAMJAwMJAwMLAwMKAgIKAgIJAQEJAAAKAgANAgEOAwIQBQQQBQQQBQQQBQQQBQQOBgQOBgQNBgQNBgQGAwMCAAMBAAcAAQwPEyJiZ3p hpyep8CfqsOjrcmnsc2sttKuuNSxuti0vdu4wd 4wd 5wuC6w G7w O5weG4wOK2vuC1vd 1vd 2vuC2vuC3v G5weG7w O9xeXAyOi/yOa x W9xuS9xuS7xOK6w G5wuC4wd 5wuC7xOK9xuTAyee9x O7xeG4wt64wNy3v9u2vtq1vdm1vdmrtM2iq8SYobqPmLFMVGoNEiUDBxYAAAgAAAUBAAMCAQEHAgAIAwELBAIMBQMPBwUOBgQQBQQPBAMQAwIQAwIQAwIQAwIQAwIQAwIAAAkICAMCAQEAAAEAAAcEAwcEAwkDAwkDAwsDAwoCAgkBAQgAAAcAAAgBAAoCAAsDAQ4DAg4DAg8EAw0FAw0FAw0FAw4GBA0GBA0GBAYDAgIBAgEABgABDAwRHVxicnmClpmiupumvqCrxKOwyai00Ku306661rG92bS/3bS/3bXA3rXA3rW/37S 3rS 3rO93bO937O937S 4LS 4LW/4bfB4bnD47vG5L3I5rzH5bvG5LvG5L3G5LvE4rnC4LfA3ra/3bXA3rfC4LjD4bnE4rbB37S/3bK927C72a661q 51a240a630KewyKCpwY YsH Gn0JJXAcLGgEFEAAACAAABQEBAgIBAAYCAAcDAAsFAAsFAAwFAwsEAgwEAgwEAg4DAg0CAQ0CAQ0CAQ0CAQ0CAQAAERAQBgUEAQAAAQAABwQDBgMCCAICCAICCAICBwEBCAAABwAABwAABwAACAEACQIADAQCDAQCDAQCDAQCDAQCDQUDDgYEDgYEDgYECAICAgECAQAGAQAMCg4aVlxsdH2Rlp 3maS8nqnBoq/IqLTQqrbSrbnVsLzYtL/ds77cs77csr3bsrzcsrzcs73ds73dtL7gtL7gtL7gtb/htsDit8HhucPjusXjvMflu8bku8bku8bkvcbku8TiucLgt8Detr/dtL/dtL/dtL/dtL/dsr3bsLvZrLrXq7nWqLfSqLTQp7LLp7DIoqzBn6e9iI jcneLOj1OAQQTAQMOAQIJAgIFBAMEBQIBBgIABwMACgQACgQACwQCCgMBCgMBCwMBDQIBDAEADAEACwAACwAACwAAAAAqKSkUExIBAAABAAAGAwIFAgEFAgEFAgEFAgEEAQAGAAAFAAAHAAAHAAAIAQAJAgAKAwEKAwELBAILBAILBAILBAINBQMNBQMOBQUIAgMCAQIAAAQAAAgTFyNMU2FtdomSnLGWorecp7 grcWntM2qt9CtudWuvdixv9ywvtuwvtuuvNmvudmwutqyvNyzvd20vuC0vt60vt61v9 2wOC3wuC4w G5xOK7xuS7xuS7xuS7xuS9xuS7xOK5wuC2wNy0vtqxvdmxvNquvNmtu9irudaquNWmttOks9Kjsc6irsqhrMWgqcGeqL2dprqBiJtla3shJjIAAg0AAwwFBAsFBAcFBAQFAwAGAgAGAgAGAgAGAgAIAQAIAQAIAQAIAQAJAQAJAQAJAQAIAAAIAAAIAAAAAENCQiMiIQMCAQMCAQYDAgUCAQUCAQQBAAQBAAQBAAYAAAUAAAUAAAUAAAYBAAYBAAkCAAkCAAoDAQoDAQsDAwsDAw0EBA0EBBAEBQgCAwIAAwAABQAACB0hLUJJV2dxgY arZSgtZumvp sxKazzKm2z6251a2817C 26 92q682ay6162316642LC62rK83LS 4LS 3rW/37bA4LfB4bfC4LjD4bjD4bnE4rrF47vG5LvG5L3G5LvE4rnC4LbA3LS 2rC82K 62Ku51qm31KW10qSz0qGx0KCw0Z2typ2pxZumv5miupukuJ6luHyCklxfbgoOGQAACQIDCgcGDAYGBwUEAwUDAAYCAAYCAAYCAAUBAAUAAAUAAAgBAAgBAAgAAAcAAAcAAAcAAAcAAAcAAAAAJiUlLy4tCAcGBQQDAwIBAgEAAgEAAQAAAQAAAQAAAwAAAwAAAwAAAwEAAwEAAwEABgEABgEACQIACgMBCwMDCwMDDAMDDQQEEAQFCgIDBAADAAAEAAAHFholNTxKXmh4ipWoj5yvl6O4nKnBpLHKpbXNqbjTqrvWrr7brLzZqrrXqLjVqbbVq7jXrbrZr7zbtL7gtL7etb/ftcDetsHftsHftsHftsHftsHft8LguMPhucTivcbkusTgt8HdtL7asrzYrbnVq7bUprTRorLPn7DNna3MmazKlqvLlabDlKO kZ62kZuwjpeqjpWjYmdzNTlEBAcQAAAFAAACBgYHBQUFBQQDBQQABgIABQEABQEABQEABQEABQEABgEABgEACQEBCAAACAAABwAABwAABwAAAAALCgo8OzoODQwIBwYCAQACAQACAQABAAABAAABAAABAAABAAADAAADAQADAQADAQAEAgAEAgAGAQAHAgAKAgIKAgIMAwMNBAQQBAULAwQHAAQBAAQAAAcQFB8nLjxVX2 GkaSMmayUoLWap7 jsMmktMyot9KputWtvdqquteouNWmttOks9KnttWsudivvNu0vuC0vt61v9 1wN62wd 1wN60v92zvtyyvdu0v922wd 4w G8xeO5w9 2wNyzvdmxu9ert9Oos9GisM2cq8qZqciVqMiSpsiRpMmNoMCLm7iJlq IkqeAiZx8g5FGSlUSExoAAAYAAAQAAAIFBAUEAwMEAwIFBAAGAgAFAQAFAQAFAQAFAQAFAQAGAQAHAgAJAwMIAgIHAQEGAAAGAAAGAAAAAAcGBisqKSAfHhEQDwIBAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEBAAEBAAEBAAEBAAEBAAQCAAcCAAoCAgoCAgwDAw0EBBAEBQsDBAgBBQIABQAABQoPGBoiLU1YZoOOoImWqJCfspimu6GuxqKyyqS10Ki51Ky82am51qe31KS00aGwz6W006m416672rS 4LS 3rS 3rS/3bXA3rO 3LK927C72a 62LG82rS/3bb
…………
中间省略大段字符串
…………
7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v4AAP7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /gAA妄?????? where id=55556

不解码直接写入成功了。单引号改成双引号就可以了。
然后我试了下用同样的方法写入解码之后的值,也比以前好一点,至少这个长串数据前面有一段能正确识别,mysql报错的位置从数据串中间开始的。

不知道我解码再转义后是否能正确?

base64_encode后的就是字符串了,直接用base64_encode后的入?,出的?候再用base64_decde ??一次就可以了。

尾部的 .../v7 /v7 /gAA妄??????  哪里来的?
 这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号

行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


我把二进制写进去了……但是图片完全损坏了。
在NaviCat里面可以看到图片的样子,身份证头像脖子领口以上完全歪到图片外面去了,没歪出去的部分也是很多彩色噪点,基本分辨不出来是什么。
如果把二进制字段另存为一个文件,那就根本打不开。

尾部的 .../v7 /v7 /gAA妄??????  哪里来的?
 这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号


我在VC端调试看了发送前的编码串,就是那个样子,看来是我编码不对了啊?

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了


我用了wincrypt.h和crypt32.lib。而且两个是在不同地方下载的。会不会版本不一样哦。明天去公司看看。

在网上找个Base64编码的C源代码试试吧,很多啊。而且有很多在线编码的网页可以用来验证编码和解码是否正确:http://www1.tc711.com/tool/BASE64.htm

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了


是在C语言里编码的时候,长度少了一位,把字符串结束符给截掉了。
改成JpgBack = new TCHAR[length+1];,后面的lentth--删掉,就没有乱码了。

但是还有个问题怎么解决啊,我得到的字串每64个字符就有一个换行。怎么把换行截掉?

对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了

对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了


我现在已经找到办法删掉回车和换行了。
但是,但是又出问题了。。。

传输过去之前的编码是正常的,我能用网上找到的编解码器恢复成图像。
而且我是特地断点检查了发送前的postdata字串里面的,都是对的。
但是一旦传递到PHP这边,我用$face = $_REQUEST['face'];接收传参,立刻die ($face),结果出来的字串,所有的加号(+)全部被替换成了空格。

这是怎么回事啊

我知道这些都能在日后读取的时候处理,但是我们老板不懂技术,我最好是从mysql里面复制出来直接能解码给他看。。。

+ 变成 空格 是 URL 解码的功劳
$face = str_replace(' ', '+', $_REQUEST['face']);
换回来就是了

$img = base64_decode($face);
还原回图片数据了

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
L'utilisation continue de PHP: raisons de son enduranceL'utilisation continue de PHP: raisons de son enduranceApr 19, 2025 am 12:23 AM

Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

PHP et Python: explorer leurs similitudes et leurs différencesPHP et Python: explorer leurs similitudes et leurs différencesApr 19, 2025 am 12:21 AM

PHP et Python sont tous deux des langages de programmation de haut niveau qui sont largement utilisés dans le développement Web, le traitement des données et les tâches d'automatisation. 1.Php est souvent utilisé pour créer des sites Web dynamiques et des systèmes de gestion de contenu, tandis que Python est souvent utilisé pour créer des cadres Web et une science des données. 2.PHP utilise Echo pour sortir du contenu, Python utilise l'impression. 3. Les deux prennent en charge la programmation orientée objet, mais la syntaxe et les mots clés sont différents. 4. PHP prend en charge la conversion de type faible, tandis que Python est plus strict. 5. L'optimisation des performances PHP comprend l'utilisation de la programmation OPCACH et asynchrone, tandis que Python utilise la programmation CPROFILE et asynchrone.

PHP et Python: différents paradigmes expliquésPHP et Python: différents paradigmes expliquésApr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP et Python: une plongée profonde dans leur histoirePHP et Python: une plongée profonde dans leur histoireApr 18, 2025 am 12:25 AM

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

Choisir entre PHP et Python: un guideChoisir entre PHP et Python: un guideApr 18, 2025 am 12:24 AM

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP et frameworks: moderniser la languePHP et frameworks: moderniser la langueApr 18, 2025 am 12:14 AM

PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

Impact de PHP: développement Web et au-delàImpact de PHP: développement Web et au-delàApr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP