V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Smirnoff
V2EX  ›  PHP

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

  •  
  •   Smirnoff · Jul 15, 2016 · 10343 views
    This topic created in 3582 days ago, the information mentioned may be changed or developed.

    准备把 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 replies    2016-07-17 12:25:18 +08:00
    lynnworld
        1
    lynnworld  
       Jul 15, 2016
    把 @ 错误抑制都去掉,看看什么报错
    chaegumi
        2
    chaegumi  
       Jul 15, 2016
    写的很糟糕的代码
    Felldeadbird
        3
    Felldeadbird  
       Jul 15, 2016
    and url like '%{$_POST['search']}%'
    好大一个注入。。
    BOYPT
        4
    BOYPT  
       Jul 15, 2016
    (看出错误!
    Smirnoff
        5
    Smirnoff  
    OP
       Jul 15, 2016
    @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  
       Jul 15, 2016
    debug 啊,排版这样的代码看出错误。。。
    killall
        7
    killall  
       Jul 15, 2016
    我勒个擦!!!!恕知识浅薄,看第一眼 $echo 这变量就不敢往下看了!
    hoythan
        8
    hoythan  
       Jul 15, 2016
    你这代码我都看懵逼了.
    saeed
        9
    saeed  
       Jul 15, 2016
    mysql_query(query,connection)
    saeed
        10
    saeed  
       Jul 15, 2016
    看错了!
    helone
        11
    helone  
       Jul 15, 2016
    aprikyblue
        12
    aprikyblue  
       Jul 15, 2016 via Android
    这什么鬼玩意。。
    initialdp
        13
    initialdp  
       Jul 15, 2016
    php7 默认把这个 mysql 接口库移除了吧?话说 PDO 很多年前就已经出了,这年头居然还在用拼接。。。
    darluc
        14
    darluc  
       Jul 15, 2016
    可以参考一下这个噢: https://log.zvz.im/2015/10/24/PHP7-1/
    "对于不一致性的修复" 这个部分有说明 "表达式求值上严重的不一致问题"
    500miles
        15
    500miles  
       Jul 15, 2016
    第一行就炸裂! boom boom boom
    genffy
        16
    genffy  
       Jul 15, 2016
    那些说 PHP 是世界上最好的语言的 programer 你们幸苦了。
    lhbc
        17
    lhbc  
       Jul 15, 2016 via Android
    那么问题来了,入侵楼主网站需要多长时间?
    cxbig
        18
    cxbig  
       Jul 15, 2016
    惨不忍睹。。。重写吧。。。
    cevincheung
        19
    cevincheung  
       Jul 15, 2016
    不吐槽了。

    mysqli_fetch_array 第二个参数默认是 MYSQLI_BOTH ,改成 MYSQLI_ASSOC 。
    notgod
        20
    notgod  
       Jul 15, 2016   ❤️ 1
    只能帮你到这里来少年

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


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

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