面对PHP页面中的错误,在我做了一些微小的更改之前工作正常

时间:2018-03-19 06:12:30

标签: php html mysql

面对PHP页面中的错误,该页面在我做了一些微小的更改之前工作正常。

错误原因是:$ type =(int)$ _ POST ['type'];

错误是:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)

FUll代码如下。

<?php
require_once '../library/config.php';
require_once '../library/functions.php';


$action = isset($_GET['action']) ? $_GET['action'] : '';

switch ($action) {

    case 'search' :
        search();
        break;

    default :
        // if action is not defined or unknown
        // move to main user page
        header('Location: index.php');
}


/*
search() function used to search hadrware, software with user given criteria.

*/`

function search()
{
    $type = $_POST['type'];
    $name = $_POST['name'];


    $hsql = "SELECT a.hostname, a.username, a.cpumodel, a.servicetag, a.monitormodel, a.phonext
             FROM assets a WHERE a.username LIKE '%$name%' ";

    $ssql = "SELECT a.hostname, a.username, a.cpumodel, a.servicetag, a.monitormodel, a.phonext
             FROM assets a WHERE a.username LIKE '%$name%' ";        

    $data = array();
    if($type == 1){
        $result = dbQuery($hsql);
        if(dbNumRows($result) == 0) {
            header('Location: ../view.php?v=search&error=' . urlencode('No Hardware Found. Please try Again.'));    
        }else {
            while($row = dbFetchAssoc($result)){
                extract($row);
                $data[] = array('hname'       => $hname, 'uname'         => $uname, 'cmodel'         => $cmodel, 'stag'          => $stag, 'mmodel'          => $mmodel, 'pext'          => $pext);
            }
            $_SESSION [result_data] = $data;
            header('Location: ../search');              
        }//else
    }
    else {

        $result = dbQuery($ssql);
        if(dbNumRows($result) == 0) {
            header('Location: ../view.php?v=search&error=' . urlencode('No Software Found. Please try Again.'));    
        }else {
            while($row = dbFetchAssoc($result)){
                extract($row);
                $data[] = array('hname'       => $hname,
                              'uname'         => $uname,
                              'cmodel'         => $cmodel,
                              'stag'          => $stag,
                              'mmodel'          => $mmodel
                              'pext'          => $pext);
            }
            $_SESSION[result_data] = $data;
            header('Location: ../search');              
        }

    }endif;

}

?>

4 个答案:

答案 0 :(得分:1)

问题出在你的评论之后。你打开一个反引号(很可能是无意中),但不要关闭它。只需删除它,它应该再次工作。 你甚至可以在突出显示中看到它。

/*
search() function used to search hadrware, software with user given criteria.

*/`

/* ^ there it is */

另外我想指出,你的代码可能是sql注入漏洞。例如:

    $type = $_POST['type'];
$name = $_POST['name'];


$hsql = "SELECT a.hostname, a.username, a.cpumodel, a.servicetag, a.monitormodel, a.phonext
         FROM assets a WHERE a.username LIKE '%$name%' ";

$ssql = "SELECT a.hostname, a.username, a.cpumodel, a.servicetag, a.monitormodel, a.phonext
         FROM assets a WHERE a.username LIKE '%$name%' "; 

答案 1 :(得分:0)

您的评论未结束。

在最后一个大括号*/

之前放置}

如果您不希望所有代码都已注释,请在执行完后删除开放/* function search() {

答案 2 :(得分:0)

问题在于变量名称中的大括号:

$type = (int)${_POST['type']}

正确的方式是没有花括号:

$type = (int)$_POST['type'];

答案 3 :(得分:0)

您在该功能上方的评论在结束评论标记后立即有一个反引号字符。这是导致问题的原因。

如果删除此反引号,则可以解决问题。它仍然无法正常工作,因为你给出的代码中还有一个编译错误,这是由于第64行末尾缺少逗号。如果你修复它,那么程序将运行,您会发现存在其他逻辑错误以及安全问题(但我会留下那些供您自行查找)。