V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Smirnoff
V2EX  ›  PHP

PHP5 的代码升级到 PHP7 遇到的问题

  •  
  •   Smirnoff · 2016-07-15 16:46:04 +08:00 · 9715 次点击
    这是一个创建于 2851 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备把 PHP5 的代码升级带 PHP7 ,其他的代码基本修改完成,但是下面这段代码数组存取就是不显示内容, 大家帮忙看看指出错误谢谢。。。

               <?php 
    			$echo=1;
    			$search="";
    			if(isset($_POST['search'])){$search="and url like '%{$_POST['search']}%'";
    			}
    			$query=mysqli_query($conn,"select count(*) as row from sqlmap where hash!='' {$search} and userhash='{$hash}' order by pr desc");
    			while($row=mysqli_fetch_array($query)){
    			if($row['status']=='running') {$class='active';}
    			else{$class='success';}
    			preg_match_all('/ => \'(.*)\n\'/',$row['data'],$match);
    			$match=$match[1];
    			$last=@$match[count($match)-1];
    			$key=$row['key'];
    			$stat=$row['status'];
    			$url=$row['url'];
    			$pr=$row['pr'];
    			$dbtype=$row['dbtype'];
                $node=$row['apiserver'];
    			if(stripos($last,"back-end") and stripos($last,"--dbms")==false){
    				$class='danger';
    				$stat='Inject';
    				mysqli_query($conn,"update sqlmap set status='{$stat}' where `key`='{$key}' and userhash='{$hash}'");
    				
    			}
    			preg_match_all('/ => \'(.*)\n\'/',$row['data'],$match);
    			$data='';
    			foreach($match[1] as $m){
    						$m=stripcslashes($m);
    						$data.=$m."\n";
    					
    						
    					}
    				
    			if(@$_GET['vul']==1 and $stat!='Inject'){
    				//echo $stat."<br>";
    				$echo=0;
    			}else{$echo=1;}
    			if($echo){
    			?>
    		
    				<tr class="<?php echo $class?>">
    
    					<td>
    						<?php echo $key?>
    						<?php echo test?>
    						<?php echo $row?>
    						<?php print_r ($key);?>
    					</td>
    					<td>
    						<?php echo substr($url,0,60)?>..
    					</td>
    					<td>
    					
    						<?php echo $stat;?>
    						
    					</td>
                            <td>
    					
    						<?php echo $node;?>
    						
    					</td>
    
    44 条回复    2016-07-17 12:25:18 +08:00
    lynnworld
        1
    lynnworld  
       2016-07-15 17:09:16 +08:00
    把 @ 错误抑制都去掉,看看什么报错
    chaegumi
        2
    chaegumi  
       2016-07-15 17:14:01 +08:00
    写的很糟糕的代码
    Felldeadbird
        3
    Felldeadbird  
       2016-07-15 17:16:05 +08:00
    and url like '%{$_POST['search']}%'
    好大一个注入。。
    BOYPT
        4
    BOYPT  
       2016-07-15 17:25:20 +08:00
    (看出错误!
    Smirnoff
        5
    Smirnoff  
    OP
       2016-07-15 17:26:37 +08:00
    @lynnworld
    @chaegumi
    @Felldeadbird
    $query=mysqli_query($conn,"select count(*) as row from sqlmap where hash!='' {$search} and userhash='{$hash}' order by pr desc");
    代码不是我写的
    貌似是这段写的出现了问题
    z5864703
        6
    z5864703  
       2016-07-15 17:35:53 +08:00
    debug 啊,排版这样的代码看出错误。。。
    killall
        7
    killall  
       2016-07-15 17:37:27 +08:00
    我勒个擦!!!!恕知识浅薄,看第一眼 $echo 这变量就不敢往下看了!
    hoythan
        8
    hoythan  
       2016-07-15 17:44:20 +08:00
    你这代码我都看懵逼了.
    saeed
        9
    saeed  
       2016-07-15 17:48:59 +08:00
    mysql_query(query,connection)
    saeed
        10
    saeed  
       2016-07-15 17:51:38 +08:00
    看错了!
    helone
        11
    helone  
       2016-07-15 18:10:31 +08:00
    aprikyblue
        12
    aprikyblue  
       2016-07-15 18:27:59 +08:00 via Android
    这什么鬼玩意。。
    initialdp
        13
    initialdp  
       2016-07-15 18:28:23 +08:00
    php7 默认把这个 mysql 接口库移除了吧?话说 PDO 很多年前就已经出了,这年头居然还在用拼接。。。
    darluc
        14
    darluc  
       2016-07-15 18:29:35 +08:00
    可以参考一下这个噢: https://log.zvz.im/2015/10/24/PHP7-1/
    "对于不一致性的修复" 这个部分有说明 "表达式求值上严重的不一致问题"
    500miles
        15
    500miles  
       2016-07-15 18:31:00 +08:00
    第一行就炸裂! boom boom boom
    genffy
        16
    genffy  
       2016-07-15 19:48:44 +08:00
    那些说 PHP 是世界上最好的语言的 programer 你们幸苦了。
    lhbc
        17
    lhbc  
       2016-07-15 20:02:02 +08:00 via Android
    那么问题来了,入侵楼主网站需要多长时间?
    cxbig
        18
    cxbig  
       2016-07-15 20:22:02 +08:00
    惨不忍睹。。。重写吧。。。
    cevincheung
        19
    cevincheung  
       2016-07-15 20:28:11 +08:00
    不吐槽了。

    mysqli_fetch_array 第二个参数默认是 MYSQLI_BOTH ,改成 MYSQLI_ASSOC 。
    notgod
        20
    notgod  
       2016-07-15 21:10:43 +08:00   ❤️ 1
    只能帮你到这里来少年

    简单修复过 无测试
    https://blog.cnlabs.net/4721.html


    很优雅的语言
    怎么被写成这样
    sql 那块 尽量使用 pdo
    实在不习惯 使用 sql 的封装也可以的 比如 adodb 封装好的
    Asimov
        21
    Asimov  
       2016-07-15 21:22:13 +08:00
    block 楼主了。
    Volio
        22
    Volio  
       2016-07-15 22:04:23 +08:00
    看到$echo=1 ...
    看不下去了
    hljjhb
        23
    hljjhb  
       2016-07-15 22:14:22 +08:00
    黑人问号???
    shiny
        24
    shiny  
       2016-07-15 22:17:25 +08:00
    @initialdp 移除的是 mysql 不是 mysqli
    mahone3297
        25
    mahone3297  
       2016-07-15 22:43:15 +08:00
    虽然代码写的确实很糟。。。
    但是,大部分公司,特别是小公司,代码可能就是这样的吧。。。
    大家的代码都写的那么赞的?可能是 v2 上的人技能比较好,所以所处的公司也比较好,代码质量比较高。
    explon
        26
    explon  
       2016-07-16 00:01:45 +08:00 via iPhone
    这种狗屎代码你还不重构?
    smallpath
        27
    smallpath  
       2016-07-16 00:17:30 +08:00
    太惨了
    caola
        28
    caola  
       2016-07-16 01:39:35 +08:00
    这代码,我也看不下去了!
    gzelvis
        29
    gzelvis  
       2016-07-16 01:44:13 +08:00
    哈哈,这贴可以用来给将来公司挖 PHP 大神
    yxzblue
        30
    yxzblue  
       2016-07-16 01:56:29 +08:00
    我以为是科普贴
    pubby
        31
    pubby  
       2016-07-16 02:00:19 +08:00
    如果是十年前的代码我就不说啥了

    不过,这么大一个漏洞,数据库里估计都有脏东西了
    thanksir
        32
    thanksir  
       2016-07-16 02:26:31 +08:00
    这代码完全看不下去
    dxwwym
        33
    dxwwym  
       2016-07-16 07:33:22 +08:00 via iPhone
    sprintf 整合好字符串再一下打印出能好一些吧?这样一个劲的 echo ……
    wzxjohn
        34
    wzxjohn  
       2016-07-16 08:33:33 +08:00 via iPhone
    作为一个业务选手我都看不下去了。。。这就是没有代码安全意识的典范。。。
    Smirnoff
        35
    Smirnoff  
    OP
       2016-07-16 11:54:54 +08:00
    @notgod 测试了,还是有错误,不显示内容
    notgod
        36
    notgod  
       2016-07-16 12:21:21 +08:00 via iPhone   ❤️ 1
    @Smirnoff
    一点一点的 var_dump
    看看哪里没返回数据吧 代码看不下去
    Smirnoff
        37
    Smirnoff  
    OP
       2016-07-16 12:26:35 +08:00
    @notgod 这是一个 git 的开源项目,我最近想移至到 PHP7 上运行,本身不是 phper ,感谢你的帮助
    zchzch1014
        38
    zchzch1014  
       2016-07-16 12:46:53 +08:00
    @notgod 看了下你博客的在线工具好像都用不了了
    ragnaroks
        39
    ragnaroks  
       2016-07-16 13:01:35 +08:00
    @Smirnoff 你应该早说是 gayhub 上的,我估计好多人都屏蔽你了
    Smirnoff
        40
    Smirnoff  
    OP
       2016-07-16 13:15:10 +08:00
    @ragnaroks 一个 sqlmapAPI 的项目, webserver 主要是代理和查看数据用,不在外网用,登录无验证,细节不在代码质量和 SQL 注入上,主要是我在搭建 DOCKER images ,想尝试吧 web 部分移植到 PHP7 , PHP5 是正常的
    aristotll
        41
    aristotll  
       2016-07-16 15:33:30 +08:00
    最好语言躺枪...
    summersky92
        42
    summersky92  
       2016-07-16 22:57:03 +08:00
    这个。。。 xdebug 一行行走也能找到了吧。。。。
    ychongsaytc
        43
    ychongsaytc  
       2016-07-17 04:37:53 +08:00
    久未见惨状,忽然感觉有点亲切
    Aaron99
        44
    Aaron99  
       2016-07-17 12:25:18 +08:00 via Android
    @initialdp 他用的 mysqli
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2865 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:18 · PVG 22:18 · LAX 07:18 · JFK 10:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.