SBF胜博发娱乐老虎机php的cli如何实现读取用户输入,但隐藏这段字符输出

( SBF胜博发娱乐老虎机 )

简单来说就是比如大家用ssh登陆时,一般要求输入密码,然后当你输入时你的输入是被隐藏的,但是后端实际上获取到了你的输入,这是怎么做到的呢?

function prompt_silent($prompt = "Enter Password:") {
  if (preg_match('/^win/i', PHP_OS)) {
    $vbscript = sys_get_temp_dir() . 'prompt_password.vbs';
    file_put_contents(
      $vbscript, 'wscript.echo(InputBox("'
      . addslashes($prompt)
      . '", "", "password here"))');
    $command = "cscript //nologo " . escapeshellarg($vbscript);
    $password = rtrim(shell_exec($command));
    unlink($vbscript);
    return $password;
  } else {
    $command = "/usr/bin/env bash -c 'echo OK'";
    if (rtrim(shell_exec($command)) !== 'OK') {
      trigger_error("Can't invoke bash");
      return;
    }
    $command = "/usr/bin/env bash -c 'read -s -p \""
      . addslashes($prompt)
      . "\" mypassword && echo \$mypassword'";
    $password = rtrim(shell_exec($command));
    echo "\n";
    return $password;
  }
}

echo prompt_silent();

参考:http://www.sitepoint.com/interactive-cli-password-prompt-in-php/

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

sbf胜博发娱乐城请教大家三表连接查询的sql怎么写

( sbf胜博发娱乐城 )

有如下三张表(第一行为字段名)

user用户表:

id name
1 aaa
2 bbb
3 ccc

chargeRecord充值记录表:

id userId money
1 1 10
2 1 2
3 2 4
4 2 6

record通话记录表:

id callId(主叫) beCallId(被叫) time(时长)
1 2 1 23
2 3 1 2
3 2 3 16

如何利用user表里面的id 和充值记录表的userId 以及record表的callId/beCallId做连接
查询 用户名,充值总金额,和通话总时长(主叫时长)
新手谢过大家了!!

SELECT user.id AS id, user.name AS name, charge.money AS money, record.time AS time
FROM user
LEFT JOIN (SELECT userId, SUM(money) AS money FROM chargerecord GROUP BY userId) AS charge ON user.id = charge.userId
LEFT JOIN (SELECT callId, SUM(time) AS time FROM record GROUP BY callId) AS record ON user.id = record.callId
ORDER BY user.id

怎么查 楼上已经给出了 我有一篇关于多表查询的文章 希望对楼主了解多表查询有帮助:SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接

各位 如果不喜欢这个答案 给评论回复 我撤掉回复 求别踩

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

胜博发游戏官网PHP算法:如何把 00301.0050600变成正整数30100506

( 胜博发游戏官网 )


/** * @description 小数点变成正整数 * * @param $str * * @return mixed */ function toIntegerNum($str) { $str = preg_replace('/(\.\d+)([0]*)/' , '\\1' , $str); $str = str_replace('.' , '' , $str); return $str; } $s = 00301.0050600; var_dump(toIntegerNum($s)); //输出string '30100506' (length=8)

新修改

重新改写了一下,还有更好的方法吗

/**
 * @description 小数点变成正整数
 *
 * @param $str
 *
 * @return mixed
 */
function toIntegerNum($str)
{
    $arr = explode('.' , $str);

    if (!empty($arr[0])) {
        $arr[0] = ltrim($arr[0] , '0');
    }

    if (!empty($arr[1])) {
        $arr[1] = rtrim($arr[1] , '0');
    }

    return ltrim(implode('' , $arr),'0');
}

$s = '00301.0050600';
//$s = 00301.0050600;
//$s = 300;
$s = 0.00560000;
var_dump(toIntegerNum($s));

按状态来解析:

  1. 记录整数部分头部零:
    从前往后逐位解析一遍,记录头部零的位数,直到遇到非零值或结尾;
  2. 记录小数部分尾部零:
    如果有小数点,则从后往前逐位解析一遍,记录尾部零的位数,直到遇到非零值或小数点;
  3. 把头部零和尾部0全部刨除,最后去掉小数点。

LZ已经给出答案了啊=w=

<?php
    $a = 00301.0050600;

    echo str_replace('.', '', floatval($a));

return trim(str_replace('.','',$str),'0')

@tczzjin 的答案

$str = 00301.0050600;
echo intval(str_replace('.','',$str));

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机博客编辑窗口与后台的交互是如何实现的?

( SBF胜博发娱乐老虎机 )

很多博客网页的编辑页面都是php,这个交互是怎么实现的呢?

html页面是怎么把数据传送给后台的呢?后台又怎么把数据存储到数据库,然后又返回给前端的呢?

php,ajax,json这当中每一步都需要什么语言?不用asp或php,有可能实现吗?

你忽略了一个重要的东西:服务器

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网微信支付 刷新以后找不到openid

( 胜博发游戏官网 )

if (!isset($_GET['code']))
        {
            //触发微信返回code码
            $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
            Header("Location: $url"); 
        }else
        {
            //获取code码,以获取openid
            $code = $_GET['code'];
            $jsApi->setCode($code);
            $openid = $jsApi->getOpenId();
        }

$unifiedOrder->setParameter("openid","$openid");

刷新或者错误返回提示:

统一支付接口中,缺少必填参数openidtrade_typeJSAPI时,openid为必填参数!

题主的第一步 已经做了Oauth认证了.
是可以获到openid的…TX跳转的链接是 XXXX.com&code=123
然后通过 code 换取 openid..
code 如果未使用过生存周期只有5分钟
题主的流程是直接生产了 prepay_id 显示支付页面的..

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城网站中URL长链接转换为短链接的接口

( sbf胜博发娱乐城 )

比如使用新浪的接口 把http://segmentfault.com/ 生成 http://t.cn/hdus8i

我想在自己的网站内一些url生成短链接,但新浪API接口 在我网站内用程序请求了几下转换的接口,用了几下就不行了,好像是授权问题,有没有好用的接口?

如果要需要生成的短链重复度高,且不多的话,可以自己写一个嘛
其他家生成的短链大多数都是需要登陆的吧

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

sbf胜博发娱乐城curl在高并发的时候会不会出现不一致问题

( sbf胜博发娱乐城 )

我现在需要使用curl抓取一个网站的内容。如果在高并发情况下,因为延时,会不会出现前面的请求的response被后面的请求接收了,造成不一致的问题?

不会,TCP 协议决定了这种事情不可能发生。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

sbf胜博发娱乐城discuzX3 开启手机版,访问网站会自动判断是来自桌面端还是移动端,是怎么做的?

( sbf胜博发娱乐城 )

是在PHP中做的判断,还是在web server中做的?
是在index.php中吗?这个文件前面有对host做处理,但没看到和user agent有关的逻辑。想请教一下discuzX3是在什么地方,如何做判断的?
谢谢啦~

没看到和user agent有关的逻辑

你居然没找到!

function checkmobile() {
    global $_G;
    $mobile = array();
    static $touchbrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
                'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
                'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
                'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
                'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
                'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
                'benq', 'haier', '^lct', '320x320', '240x320', '176x220', 'windows phone');
    static $wmlbrowser_list = array('cect', 'compal', 'ctl', 'lg', 'nec', 'tcl', 'alcatel', 'ericsson', 'bird', 'daxian', 'dbtel', 'eastcom',
            'pantech', 'dopod', 'philips', 'haier', 'konka', 'kejian', 'lenovo', 'benq', 'mot', 'soutec', 'nokia', 'sagem', 'sgh',
            'sed', 'capitel', 'panasonic', 'sonyericsson', 'sharp', 'amoi', 'panda', 'zte');

    static $pad_list = array('ipad');

    $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

    if(dstrpos($useragent, $pad_list)) {
        return false;
    }
    if(($v = dstrpos($useragent, $touchbrowser_list, true))){
        $_G['mobile'] = $v;
        return '2';
    }
    if(($v = dstrpos($useragent, $wmlbrowser_list))) {
        $_G['mobile'] = $v;
        return '3'; //wml版
    }
    $brower = array('mozilla', 'chrome', 'safari', 'opera', 'm3gate', 'winwap', 'openwave', 'myop');
    if(dstrpos($useragent, $brower)) return false;

    $_G['mobile'] = 'unknown';
    if(isset($_G['mobiletpl'][$_GET['mobile']])) {
        return true;
    } else {
        return false;
    }
}

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

SBF胜博发娱乐老虎机php静态类和model写法的问题

( SBF胜博发娱乐老虎机 )

现在开发用的tp框架
准备写个commonModel,里面放基础的增删改查
所有其他model继承这个model
有两个问题~
1、这个commonModel写成静态类是否合理
2、如果class A extends B , B是静态类, 那如何在A里调用B的方法
3、不介意的话各位可以把model贴出来看看大伙都怎么写的常用方法

hmm…好像是三个问题

A里调用B的方法用self::fun()这种形式

parent::functionName();

1.在子类中实现单例吧。或者用后期绑定在父类中定义单例方法。如果用静态,那么在子类中你怎么访问上下文$this?
2. 如果class A extends B , B是静态类, 那如何在A里调用B的方法:

  • B::foo()
  • parent::foo()
  1. 简单的CRUD直接用框架封装的方法吧。自己定义一个BaseModel主要还是解决 _before_inser/update/delte… 等问题。

那为什么不写成抽象类?

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网评论应该怎么读取?

( 胜博发游戏官网 )

数据库结构:

CREATE TABLE IF NOT EXISTS `Blog`.`comments` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '评论ID',
  `content` TEXT NOT NULL COMMENT '评论内容',
  `create_time` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '评论时间',
  `author` VARCHAR(45) NOT NULL DEFAULT '' COMMENT '作者名称',
  `ip` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'IP',
  `url` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '网址',
  `email` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '邮箱',
  `agent` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '浏览器信息',
  `parent_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '父级ID',
  `status` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '状态',
  `article_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '评论的文章ID',
  PRIMARY KEY (`id`),
  INDEX `fk_article_comments_article1_idx` (`article_id` ASC))
ENGINE = MyISAM
COMMENT = '文章评论表';

相应文章的评论读出来以后,我用的递归把评论展示出来。
但是现在有个问题,比如我一页显示10个评论,要显示第一页,我现在把顶级评论读出来了,但是这些评论下的回复怎么查最优呢?(因为回复可能有很多级,所以我现在递归查询数据库已经。。。咳咳)

如果使用3个 id 呢, 一个是回复对象(上级回复) id, 一个是文章 id, 一个是顶级回复 id 呢, 这样可以用顶级回复 id 一次性去取全部的, 再根据时间排序好楼层, 还需要一个字段标记不是回复别人而是直接评论文章, 加入这个条件来分页

其实不建议盖那么多楼层, 一次就好, 想 sf 这样, 评论都在现在, 使用 @xxx 的方式就好, 当然直观性不如盖楼

也会引发出一些问题, 比如中间楼层被管理员删除等…

非常好的问题。

这种无限级的问题,其实有很多种解法,最简单但效率不一定是最低的实现方法就是递归。
在实际项目中,这样无限的盖楼和引用不会超过10层。
所以,在数据量可控的情况下其实是没有太大问题的。
但在分页时只取子评论ID,且最好把评论的结构存放到缓存中,在内存中排序量并不会很大。
基于现在的表结构,优化的方法则是加上一个字段,所有子评论ID,用逗号等分隔符连接直接,减少递归时的查询。

Mysql的数据类型很单一,换成或搭配Redis、Mongo、PostgreSql、oracle便可通过存储为格式化的数据结构简单解决。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城PHP: 使用chr打印汉字

( sbf胜博发娱乐城 )

使用chr($i)可以顺利的打印出ASCII,但是,当$i>=19968(汉字的Unicode的起始值4E00的十进制)后,发现没法打印出汉字。
如:

<?php
    //代码1
    header('Content-Type: text/html; charset=utf-8');
    echo chr(19968);//汉字一的Unicode值:4E00
?>

虽然有其他方法,如:

//代码2
$character = html_entity_decode('&#x4e00;', ENT_QUOTES, 'UTF-8');

但为什么代码1没法打印出汉字?

ASCII根本就不包含汉字,
包含汉字的是GB2312-80,GBK,Big5,unicode
汉字是多字节,你用ord就会发现,只会返还汉字的首字节。

其实chr函数的源代码就在 /ext/standard/string.c
代码如下

PHP_FUNCTION(chr)

{
long c;
char temp[2];

if (ZEND_NUM_ARGS() != 1) {
    WRONG_PARAM_COUNT;
}

if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "l", &c) == FAILURE) {
    c = 0;
}

temp[0] = (char)c;
temp[1] = '\0';

RETURN_STRINGL(temp, 1, 1);

}
可以看到的是,就是C语言的字符强制转换。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

SBF胜博发娱乐老虎机laravel 开发后台出现重定向循环

( SBF胜博发娱乐老虎机 )

我在使用laravel开发项目,但是目前遇到一个问题就是我在进入我的admin后台文件夹是,出现了重定向循环,不知道为什么

public目录里是否正好有个admin的文件夹?如果是,参考这里

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网空 MYSQL 表 PHP-PDO 插入数据总是提示重复

( 胜博发游戏官网 )

[10-Nov-2014 13:26:31 Asia/Shanghai]
PHP Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘o5z0Cj3s-fIVcmUnfbA0cc’ for key ‘openi” in W:\rcode_s2.php:69

为什么? 表示空的, 也运行过 TRUNCATE

PHP的致命错误:未捕获的异常’ PDOException的消息’ SQLSTATE [ 23000 ]:违反完整性约束:1062重复的条目的o5z0cj3s-fivcmunfba0cc”键“开放”W:\ rcode_s2 PHP:69。 表示空的??不会吧??

该答案已被忽略,原因:

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机PHP中require和include的问题。

( SBF胜博发娱乐老虎机 )

已知require和include都是引入文件。现在的很多框架都是单入口,在框架初始化的时候要require很多个类库和文件,问题是:

  1. require的文件最后放在内存里吗?
  2. 如果第一个问题成立,那么当很多人同时访问服务器的时候,a. 放在内存里的这些文件能给大家共享用吗?b. 还是每一个用户访问都重新开辟一块内存?

記得 php5.5 zend 出的 OpCode Cache 可以緩存免得重複編譯。

這時 1 和 2.a 都是成立的了。

而 2.b 是執行的時候的 context 不是 cache。cache 是公用的,context 是單獨的。

參見:https://support.cloud.engineyard.com/entries/26902267-PHP-Performance-I-Everything-You-Need-to-Know-About-OpCode-Caches

1.文件内容肯定不是放在内存,应该是按加载顺序编译。
2.每个用户请求都应该是独立的,需要重新加载和编译代码。

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网PHP命名空间 能用 ../abc 这种路径吗?

( 胜博发游戏官网 )

就是引用父空间的 方法,函数:
我试了试不行,也不知道真不行,还是自己写错了..

<?php
namesapce a\b;
//★★这里怎么引用下面那个 say?



<?php
namesapce a;
function say()
{
}

<?php

namesapce a\b;

use a\say;

say();

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网微信是不是禁用点击图文消息跳转

( 胜博发游戏官网 )

微信现在是不是禁用,点击推送的消息跳转到自己的网站????看官方文档没有接口,文字消息是可以加a标签。。我看了下迅雷的服务号完全可以的,难道他们是合作关系。?

回复的图文消息可以设置跳转地址,你看下开发文档,有个参数设置的

推送的图文?还是通过发送关键字回复的图文?
如果是推送的图文,直接链接到自己那里,那是用的商品消息推送。
如果是通过发送关键字回复或者点击菜单后回复的,那是可以通过代码实现的。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网laravel提示Use of undefined constant MCRYPT_RIJNDAEL_128 ?

( 胜博发游戏官网 )

Use of undefined constant MCRYPT_RIJNDAEL_128 – assumed ‘MCRYPT_RIJNDAEL_128’
通过apache启动时正常,但是用nginx启动就报这个错误。

这是在nginx下查看的

看起来没有正确加载mcrypt模块;
可能nginx和apache加载的php配置文件不同,你用Nginx启动后;
写个phpinfo();查看php.ini的路径是否和apache下一致,或者直接查看下面的配置段是否有mcrypt配置段;
根据查到的php.ini路径,检查或配置mcrypt模块开启;然后重启php进程;

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机为什么空提交什么都不提示?

( SBF胜博发娱乐老虎机 )

第一次打开这个页面的时候没有post数据 为了避免错误提示我在最外面加了一个判断if(trim(@$_POST[‘num’])) 在里面为了避免空提交我又做了一个判断(isset($_POST[‘yzm’])&&trim($_POST[‘num’])) 如果没有post数据就提示没有输入 但是我只输入验证码 上面的文本框什么都不写 提交后什么都不提示 这是为什么呢?应该提示没有输入才对呀?

<form method="post" >
    <input type="text" name="num"><br />
    <input type="text" style="display: inline-block;width: 50px;" name="yzm"></span>
    <img id="checkpic" onclick="javascript:this.src='yzm2.php?tm='+Math.random();" src='yzm2.php' />
    <button type="submit">提交</button>
</form>
<?php
    if(trim(@$_POST['num'])){
        session_start();
        if(isset($_POST['yzm'])&&trim($_POST['num'])){
            if($_SESSION["str"]==$_POST['yzm']){
              echo "right";
              $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
              $stmt=$pdo->prepare("insert into test(num)values(:num)");
              $stmt->execute(array(':num'=>$_POST['num']));
            }else{
              echo "wrong";
            }
        }else{
          echo "还没有输入";
        }
    }
    
?>

if(trim($_POST['num'])) 你什么都没提交就是 $_POST[‘num’]为空了,if(false)所以根本没进去。很简单的问题吧。

自己思考一下吧,你的代码不能自圆其说,你用isset($_POST[‘yzm’])防止未定义下标没问题,但是trim($_POST[‘num’])如果$_POST[‘num’]也没定义不也是错么?要不就都验证,要不就都别验证,这种情况说明你写代码的姿势不对。

写程序是很傻瓜的,是开发者的休息时间。为什么呢?因为要先想好再动手写,而不是写几个字想一下,所以思考才是工作,写程序只是把思考结果记录下来而已。
你的代码问题很明显,如果你写之前考虑了未定义问题,那么肯定就这样了:

if(isset($_POST['num']) && isset($_POST['yzm'])){
    //...处理逻辑
}

而你的代码不是,是你敲到$_POST[‘yzm’]的时候突然想起来我是不是要做个未定义验证呢?这种突如其来的灵感其实会把你的思路完全打乱,不建议。

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…