精华内容
下载资源
问答
  • v8js-在PHP中运行javascript代码
    万次阅读
    2018-11-19 11:54:12

    起因

    之前写自动登录操作一个网站的PHP脚本,但是发现该网站用js代码做了cookie的计算和验证,所以使用了v8js。

    安装

    1. 安装v8。(Mac:brew install v8)
    2. 使用pecl install v8js 安装的过程中要求输入v8的安装目录。
    3. 安装完之后,把生成的.so动态链接库引入到ini文件中。
    include_path = ".:/usr/lib/php/pear"
    extension=/usr/lib/php/extensions/no-debug-non-zts-20160303/v8js.so
    
    1. 用php -i | grep v8js查看v8扩展的运行状态。

    使用

    <?php
    
    $v8 = new V8Js();
    
    /* basic.js */
    $JS = <<< EOT
    len = print('Hello' + ' ' + 'World!' + "\\n");
    len;
    EOT;
    
    try {
      var_dump($v8->executeString($JS, 'basic.js'));
    } catch (V8JsException $e) {
      var_dump($e);
    }
    
    ?>
    

    以上例程会输出:

    Hello World!
    int(13)
    
    更多相关内容
  • 在php文件里面插入文件html

    万次阅读 2017-10-14 09:09:50
    有的时候我们得在php文件里面引入html代码,或者在php文件的某个位置引入文件html,下面就介绍一下实现的方法。 下面是recharge.php的代码: <?php require_once "../../config.php"; ?> 充值 ...

    有的时候我们得在php文件里面引入html代码,或者在php文件的某个位置引入文件html,下面就介绍一下实现的方法。


    下面是recharge.php的代码:

    <?php
      require_once "../../config.php";
    ?>
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="utf-8">
    	<title>充值</title>
    	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    	<link rel="stylesheet" href="../common/css/header.css" />
    	<link rel="stylesheet" href="css/recharge.css">
      <link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" rel="stylesheet" />
      <script src="http://i.gtimg.cn/qzone/biz/gdt/lib/jquery/jquery-2.1.4.js?max_age=31536000"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
      <script src="../common/js/common.js"></script>
      <script src="../config.js"></script>
      <script src="js/recharge.js"></script>
    </head>
    
    <body>
      <script type="text/javascript">
        var serviceChargePoint = <?php echo $redbag_cash_in_point;?>;
      </script>
    	<!-- 引入公共模块:只有logo的导航条 -->
      <?php
        include_once('../common/header2.html');
      ?>
    
      <div class="rechargeDiv">
      	<h2>充值到账户</h2>
      	<p>当前账户余额:<span class="balance" id="balance">0.00</span>元</p>
      	<input type="text" name="data" class="rechargeInput" placeholder="请输入充值数额(元)" id="rechargeInput" οnkeyup="calculatePoundage()">
      	<p class="poundage">手续费<span class="poundageMoney" id="poundageMoney" name="result">0.00</span>元(手续费=充值金额*<?php echo $redbag_cash_in_point;?>%)</p>
      	<p>需支付:<span class="pay" id="pay">0.00</span>元</p>
      	<span class="example">例如:您充值22元,则共需支付22+22*<?php echo $redbag_cash_in_point;?>%=24.2元</span>
      	<button type="button" class="rechargeBtn" id="rechargeBtn">充值</button>
      </div>
    </body>
    </html>
    我们可以在php文件里面直接写html的标签,用来显示页面的。

    也可以在<body></body>标签的任意位置引入文件html,如下面的形式:

      <?php
        include_once('../common/header2.html');
      ?>
    注意:路径一定要正确

    展开全文
  • 方法一: 在PHP代码中取得当前日期时间再插入数据库 默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时 ,所以date("Y-m-d H:i:s")得出的时间比当前时间少了8个小时。 gmdate...
    方法一: 在PHP代码中取得当前日期时间再插入数据库
    默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时

    ,所以date("Y-m-d H:i:s")得出的时间比当前时间少了8个小时。
    gmdate("Y-m-d H:i:s")函数得出的时间是经过与GMT相加减过的,能得到本地时间,但要在

    PHP.ini中用date.timezone这个选项设置时区,但默认是关闭的,而且在部分PHP版本中无法

    正常实现。
    一个比较好的实现的方法,手动修正时差,如下:
    $timeoffset = 8;
    echo gmdate("Y-m-d H:i:s", mktime() + $timeoffset * 3600) . "<br>";
    echo gmdate("Y-m-d H:i:s", time() + $timeoffset * 3600) . "<br>";
    echo date("Y-m-d H:i:s", mktime() + $timeoffset * 3600) . "<br>";
    echo date("Y-m-d H:i:s", time() + $timeoffset * 3600) . "<br>";
    都输出如下格式:2007-11-24 17:41:58
    $t = gmdate("Y-m-d H:i:s", mktime() + 8 * 3600)
    $sql = "insert into xxxx (addDateTime) values ($t)"


    方法二: 在SQL语句中使用MYSQL内置的函数取得当前日期时间
    使用now()函数
    insert into xxxx (addDateTime) values (now())


    小结 :
    相比上述两种方法,使用MYSQL内置函数比较好
    展开全文
  • 在php中使用redis cluster 集群

    万次阅读 2016-04-04 19:28:46
    目前我们用到的 php 的 redis 扩展 主要有2个,第一个是最常用的 phpredis, 它是用c写的php的高效扩展:https://github.com/phpredis/phpredis,还有1个是predis,...我们分别看下他们集群中的用法。 phpredis

    目前我们用到的 php 的 redis 扩展 主要有2个,第一个是最常用的 phpredis, 它是用c写的php的高效扩展:https://github.com/phpredis/phpredis,还有1个是predis, 它是用php代码写的,也用的蛮多的:https://github.com/nrk/predis

    我们分别看下他们在集群中的用法。

    phpredis

    phpredis的安装

    我Mac上是有安装过phpredis扩展的,但是是2.* 版本,是不支持cluster的,所以需要升级到3.0扩展。我记录下升级过程:

     
    1. ~ git clone git@github.com:phpredis/phpredis.git
    2. ~ cd phpredis
    3. ~ git fetch
    4. ~ git checout feature/redis_cluster #切换到cluster分支
    5. ~ phpize
    6. ~ ./configure
    7. ~ make
    8. ~ make install
    9. Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/

    这样就可以用了。如果你是第一次安装redis扩展,还需要在php.ini中加上:

     
    1. extension=redis.so

    3.0版本的redis扩展已经安装好了。我们可以重启一下php-fpm。

     
    1. sudo kill -USR2 `cat /usr/local/var/run/php-fpm.pid`

    官方的文档太少了:https://github.com/phpredis/phpredis/blob/feature/redis_cluster/cluster.markdown。就这一个。

    就根据这个文档来学习简单学习下吧:

    先完成初始化连接到redis cluster服务器:

     
    1. $obj_cluster = new RedisCluster(NULL, ['192.168.33.13:7000', '192.168.33.13:7001', '192.168.33.13:7002', '192.168.33.13:7003', '192.168.33.13:7004']);
    2. var_dump($obj_cluster);

    第一个参数传NULL 别问我,我也不知道为啥。反正文档没找到,这篇也没看懂。 
    第二个参数是我们需要连接的redis cluster的master服务器列表。我们有5个master,就填5个。

    打印结果如下:

    class RedisCluster#5 (0) {}
    

    一个RedisCluster 类资源。表示redis 已经连接成功了。

    那么,我们就可以实用之前redis的方法来尝试了:

     
    1. $obj_cluster->set('name1', '1111');
    2. $obj_cluster->set('name2', '2222');
    3. $obj_cluster->set('name3', '333');
    4. $name1 = $obj_cluster->get('name1');
    5. $name2 = $obj_cluster->get('name2');
    6. $name3 = $obj_cluster->get('name3');
    7. var_dump($name1, $name2, $name3);die;

    结果如下:

     
    1. string(4) "1111"
    2. string(4) "2222"
    3. string(3) "333"

    很完美,没啥问题。而且,他是直接就给结果了。

    前面的redis cluster 的学习,我们知道name1name2name3 是3个key , 会按照算法,分配到3个slot上,有可能分到3台服务器上。

    我们连接客户端看下:

     
    1. redis-cli -h 192.168.33.13 -p 7009 -c
    2. 192.168.33.13:7009> get name1
    3. -> Redirected to slot [12933] located at 192.168.33.13:7003
    4. "1111"
    5. 192.168.33.13:7003> get name2
    6. -> Redirected to slot [742] located at 192.168.33.13:7000
    7. "2222"
    8. 192.168.33.13:7000> get name3
    9. -> Redirected to slot [4807] located at 192.168.33.13:7001
    10. "333"
    11. 192.168.33.13:7001>

    客户端是有跳转的,而php的扩展phpredis直接就给出结果了,这点很赞。

    phpredis的使用

    我们继续看这个蛋疼的文档,它还提供了一种连接方式:

     
    1. // Connect and specify timeout and read_timeout
    2. $obj_cluster = new RedisCluster(
    3. NULL, Array("host:7000", "host:7001", 1.5, 1.5);
    4. );

    后面加入了timeoutread_timeout功能。就是加到master列表的后面。

    • timeout表示连接redis的最长时间,这里设为1.5秒,表示超过1.5秒要是还没连接成功就返回false 。

    • read_timeout表示连接redis成功后,读取一个key的超时时间,有时候读取一个key 可能value比较大,读取需要很长时间,这里设置1.5秒,表示要是过了1.5秒还没读取到数据就返回false。

    好。我们试一下:

     
    1. $obj_cluster = new RedisCluster(NULL, ['192.168.33.13:7000', '192.168.33.13:7001', '192.168.33.13:7002', '192.168.33.13:7003', '192.168.33.13:7004', 1.5, 1.5]);

    在master列表后面加入了2个参数。其实的操作几乎一样。

    我尝试的只用了一个master去连接,发现也可以,并没什么差别???

    如下:

     
    1. $obj_cluster = new RedisCluster(NULL, ['192.168.33.13:7000', 1.5, 1.5]);
    2. $obj_cluster->set('name1', '1111');
    3. $name1 = $obj_cluster->get('name1');
    4. var_dump($name1);
    5. //输出
    6. string(4) "1111"

    只填一个也可以。我在想,它是不是自己就能识别啊。不需要填这么多啊。但是,我没找到相关的文档,证明我的观点。

    而且,我换一个slave来连接,写也可以成功!!!

     
    1. //7009是个slave
    2. $obj_cluster = new RedisCluster(NULL, ['192.168.33.13:7009', 1.5, 1.5]);
    3. $obj_cluster->set('name1', '4555');
    4. $name1 = $obj_cluster->get('name1');
    5. var_dump($name1);
    6. //输出
    7. string(4) "4555"

    好吧。我姑且认为,它会自动内部判断主从。还蛮厉害的。

    还有其他的功能和命令,例如:zadd、lpop、hget等。就不说了。

    predis

    predis的下载安装

    predis是一套用php代码写的php连接redis的扩展,用到了命名空间,我之前用过,其实效率还可以,比phpredis稍微低一点,但是它由于接口众多,所以功能很强大。

    网页redis管理工具phpRedisAdmin (https://github.com/ErikDubbelboer/phpRedisAdmin)就是用的predis作为连接的。

    好,先下载看看。可以用composer 或者 git clone。我这里用git clone 吧。最新的稳定版本是 v1.03

     
    1. redis git clone git@github.com:nrk/predis.git
    2. redis cd predis
    3. predis git:(master) git checkout v1.0.3 #切换到最新的文档版本
    4. predis git:(84060b9)

    OK,我新建一个test.php 文件,我们再测试一下cluster业务。

     
    1. <?php
    2. require 'predis/autoload.php';
    3. $servers = [
    4. 'tcp://192.168.33.13:7000',
    5. 'tcp://192.168.33.13:7001',
    6. 'tcp://192.168.33.13:7002',
    7. 'tcp://192.168.33.13:7003',
    8. 'tcp://192.168.33.13:7004',
    9. ];
    10. $options = ['cluster' => 'redis'];
    11. $client = new Predis\Client($servers, $options);
    12. $client->set('name1', '1111111');
    13. $client->set('name2', '2222222');
    14. $client->set('name3', '3333333');
    15. $name1 = $client->get('name1');
    16. $name2 = $client->get('name2');
    17. $name3 = $client->get('name3');
    18. var_dump($name1, $name2, $name3);die;

    打印结果:

     
    1. redis php test.php
    2. string(7) "1111111"
    3. string(7) "2222222"
    4. string(7) "3333333"

    非常棒~

    当然,它也类似,只填写一个也是可以的,目前发现没什么坑,也没文档说明为啥可以:

     
    1. require 'predis/autoload.php';
    2. $servers = [
    3. 'tcp://192.168.33.13:7000',
    4. ];
    5. $options = ['cluster' => 'redis'];
    6. $client = new Predis\Client($servers, $options);
    7. $client->set('name1', '1111111');

    其他的一些用法也是类似的:

     
    1. $client->hset('name77', 'name', 'yang');
    2. $b = $client->hget('name77', 'name');
    3. ...
    4. ...

    先到这,其他的都和之前的redis 一样使用。

    有坑再来填吧~

    展开全文
  • 在PHP中怎么接收post过来的JSON数据

    万次阅读 2017-05-24 22:52:47
    php 接收post json
  • 在PHP中整体接收POST数据,有两种方法。 注意,要使用以下两种方法,Content-Type不能为multipart/form-data。 方法一: 使用: 1 file_get_contents('php://input') 其中,php://input...
  • 在PHP里QRcode的参数详解,简单明了!

    万次阅读 2018-06-01 11:54:06
    QRCode码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,微信平台的火爆带动二维码互联网行业的广泛应用。...而目前制作网站的语言一般都是PHP,我们现在就来讲一下,在PHP里,QRcode类库...
  • PHP配置文件php.ini哪里?

    千次阅读 2020-06-20 17:57:07
    本教程中,我们将讨论php.ini — PHP中的主要配置文件。 从初学者的角度,我们将讨论其含义,何处定位以及它提供的几个重要配置设置。 什么是 无论您是PHP初学者还是经验丰富的开发人员,我都可以肯定您已经...
  • php查询数据库信息页面中显示

    万次阅读 2019-07-12 21:37:04
    php查询数据库信息返回到页面中 <?php error_reporting(E_ALL ^ E_NOTICE); $dbhost = 'localhost:3306'; $dbuser = 'root';...
  • flag就flag.php

    万次阅读 2018-05-13 19:20:26
    Web1 题目地址 1.访问题目存在一个登录界面 ...3.访问flag.php,试试可不可以得到flag ...提示admin可以得到flag,然后跳转...发现Cookie里有username,而且每一个用户的username是不一样的,后面的值是base64加密...
  • php测试题及答案

    万次阅读 多人点赞 2019-08-22 21:11:26
    1.php中布尔类型数据只有两个值:真和假。( 对 ) 逻辑的真和假 2.php中连接两个字符串的符号是“+ ”。( 错 ) 用的是 点 . 3.php可以使用“scanf”来打印输出结果。( 错 ) echo print 4.每个语句结尾都...
  • PHP 基础

    万次阅读 多人点赞 2020-12-24 10:03:46
    PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中...
  • 在php中调用接口以及编写接口

    万次阅读 多人点赞 2015-12-09 09:37:05
    这里openUser.php相当于一个接口,其中get_user_list 是一个API(获取用户列表),讲求返回的数据类型为JSON格式。 你只需要PHP代码中执行这条链接他就会返回。 GET方式的直接使用 $file_contents = ...
  • 在php的换行操作中,\n与 的区别

    万次阅读 2017-03-22 00:26:08
    博主我今天遇见了一个情况就是在php代码中写入\n换行操作符,以为浏览器那里呈现的输出是换行,没想到却没有。代码和结果如下所示: $name="haha"; echo "hi,$name"; echo "\n"; echo 'hi,$name'; ?> ...
  • 开源php官方团队解散,php语言大厦将倾?

    万次阅读 多人点赞 2019-08-07 22:44:43
    二、Zeev Suraski 何许人也三、这位大佬对php的贡献几何1、从github上看2、现在的php开发团队3、鸟哥说啥了吗四、php目前发展现状如何1、php在网站端的应用2018市场占有率:2019市场占有率:2、php软件库的发展...
  • 在PHP中判断一个变量是否为整数

    万次阅读 2016-12-31 11:11:17
    PHP代码的时候遇到这样一个小问题:如何判断一个变量是否为整数,于是网上找到了两个方法来解决,此做一个小小的记录。方法1<?php $num=12; //返回right //$num=12.1 返回false if(is_int($num)){ echo ...
  • 关于如何在php7中使用mysqli扩展

    万次阅读 2017-04-17 18:13:39
    第一步:因为php7安装目录中没有...”相当于注释,在php.ini中找到extension=php_mysqli.dll这一行把前面的“;”去掉。 第三步:Apache24安装目录中找到conf目录下的httpd.conf文件打开并最后添加: LoadModu...
  • php_redis.dll redis for php 5.4.x

    千次下载 热门讨论 2013-05-11 13:14:59
    首先把php_redis.dll 和 php_igbinary.dll 放入PHP的ext文件夹,然后在php.ini配置文件里添加如下代码: extension=php_igbinary.dll extension=php_redis.dll 重启web服务器 注意:extension=php_igbinary.dll...
  • 很多朋友php的时候,难免会遇到需要将html标签进行转义存储。比如存入数据库、xml文件等。而存储进去后,读取出来则需要转换成html输出。网上有许多人编写的转换函数,很长很难懂。其实php早就自带有这样的函数...
  • php对mime type为“application/x-www-form-urlencoded”(表单提交)和“multipart/form-data”(文件上传)的Post请求的数据作特殊处理 下面以“multipart/form-data”为例对源码进行解析: 当客户端发起文件...
  • 如何在PHP7中安装mysql的扩展

    万次阅读 2017-02-13 23:11:55
    相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect():...
  • 初次学习用php操作数据库,做一做笔记,简单的总结一下如何web界面输出查询内容和向数据库中添加记录。如有错误,望评论指正。 就是用php嵌套HTML代码,用一个table输出。 学习中遇到一些问题: 1.PHP...
  • php笔记

    万次阅读 2020-09-07 09:36:03
    【1】windows下php运行环境安装 【2】php连接MySQL 【3】centos7下用yum的方式安装php7.2 【4】编译式安装php 【5】php日志文件 【6】php.ini配置 【7】php-fpm.conf重要参数详解 【8】扩展mysql 【1】windows下php...
  • 原因是thinkphp里面的数据库链接配置里面 在php7里面,已经不能用mysql_connect,只能把mysql改为mysqli 这样就可以正常使用thinkphp3.2链接数据库了.
  • 如何HTML中使用PHP

    万次阅读 多人点赞 2020-06-22 07:31:00
    本文中,我将向您展示如何HTML页面中使用PHP代码。 它针对试图加强对世界上最流行的服务器端脚本语言的了解的PHP初学者。 同样,PHP是一种服务器端脚本语言。 这意味着将服务器上执行PHP脚本,服务器上...
  • PHP开启mysqli扩展

    万次阅读 2017-12-21 17:50:19
    这个问题困扰了我很久,Call to undefined function mysql_connect() 解决这个问题需要开启mysqli...在php.ini中搜索php_mysqli.dll 2.设置extension_dir指令; Windows Extensions ; Note that ODBC support is bui
  • PHP浏览器中直接输出图片

    万次阅读 2017-09-21 20:35:18
    浏览器中输出图片,最简单的方法当然是使用HTML的img标签,直接传入图片路径或者链接。但有时候我们需要把图片做一些处理,比如改一下图片质量或者尺寸再显示出来,我们可以使用PHP内置的图片处理函数...
  • 解决PHP页面显示乱码解决方案

    万次阅读 2018-09-21 09:55:59
    1.head后,title前加入一行: &lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8' /&gt; 顺序不能错,一定要head后,title前。 2.html文件编码问题: 点击编辑器的菜单:“文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,080,433
精华内容 1,232,173
关键字:

怎么在php