当前位置: 首页 > 知识库问答 >
问题:

函数中的变量不能在HTML中回显

吴均
2023-03-14

我有一个带有“提交”按钮的表单,当单击它时,它调用display()函数。

display()是一个包含另一个。php文件的函数,在该文件中我可以对IDS进行不同的转换。

基本上,我在问,我是否做错了什么,或者是否有更好/更合乎逻辑的方法来做这件事,所以我可以调用这些变量。(请记住,我每次都需要它们,因为提交表单时会提交URL。)

下面是我的代码(index.php)

            <head>
                <meta charset="UTF-8">
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
                <meta http-equiv="X-UA-Compatible" content="ie=edge">
                <title>STEAM CONV</title>
                <link rel="stylesheet" href="style.css">
            </head>

            <body>
                <form method="post">
                    <input type="text" name="profile_url">
                    <input type="submit" value="click" name="submit">
                </form>

                <h1><?php echo $userid;   ?></h1>

               <img onerror="this.style.display='none'" src="<?php

                    require_once 'steamid.class.php';
                    $input = $_POST["profile_url"];
                    $api_key = "XXXXXXXXXXXXXXXXXXXX";
                    $id = new SteamID($input,$api_key);

                    if ($id->resolveVanity()) {
                        $avatar = $id->toAvatar();
                        echo $avatar;
                    }

               ?>">

            </body>


    <?php

    require_once 'steamid.class.php';


    function urlCheck() {
        $input = $_POST["profile_url"];
        if(substr_count($input, ' ') === strlen($input)) {
          echo "Enter URL";

          return false;
        } else {
          return true;
        }

    }

    if(isset($_POST['submit']))
    {
       display();
    }

    function display() {

        require_once 'steamid.class.php';
        $input = $_POST["profile_url"];
        $api_key = "XXXXXXXXXXXX";
        $id = new SteamID($input,$api_key);

        if(urlCheck()) {

            if ($id->resolveVanity()) {



            $communityid = $id->toCommunityID();
            echo $communityid . ", " . " ";

            $steamid = $id->toSteamID();
            echo $steamid . ", " . " ";

            global $userid;

            $userid = '[U:1:'.$id->toUserID().']';
            echo $userid . ", " . " ";



            } else {
                echo "Profile wasnt found!";
            }

        }
    }


    ?>

steamid.class.php

<?php

        class SteamID {

          protected $id;
          protected $key;

          public function __construct($id,$api_key = '') {
            $this->id = $id;
            $this->key = $api_key;
            return $this;
          }

          public function isID32() {
            if(preg_match('/^STEAM_0:[01]:[0-9]{8,9}$/', $this->id)) {
                return true;
            }
            return false;
          }

          public function isID64() {
            if(preg_match('/7656119[0-9]{10}/i', $this->id)) {
              $this->id = $this->cleanOutput(str_replace('https://steamcommunity.com/profiles/', '', $this->id));
              return true;
            }
            return false;
          }

          public function resolveVanity() {
            $search = $this->cleanOutput(str_replace('https://steamcommunity.com/id/', '', $this->id));
            $api = 'http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key='.$this->key.'&vanityurl='.$search;
            $vanity = $this->getCURL($api);
            if ($vanity['response']['success'] === 1) {
              $this->id = $vanity['response']['steamid'];
              return true;
            }
            else {
              return false;
            }
          }

          public function toAvatar() {
            if ($this->isID32() || $this->isID64() || $this->resolveVanity()) {
              $key = $this->toCommunityID();
              $api = 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='.$this->key.'&steamids='.$key;
              $data = $this->getCURL($api);
              $image = $data['response']['players'][0]['avatarfull'];
              return $image;
            }
            else {
              return false;
            }
          }

          public function toCommunityID() {
              if (preg_match('/^STEAM_/', $this->id)) {
                  $parts = explode(':', $this->id);
                  return bcadd(bcadd(bcmul($parts[2], '2'), '76561197960265728'), $parts[1]);
              } elseif (is_numeric($this->id) && strlen($this->id) < 16) {
                  return bcadd($this->id, '76561197960265728');
              } else {
                  return $this->id;
              }
          }

          public function toSteamID() {
              if (is_numeric($this->id) && strlen($this->id) >= 16) {
                        $this->id = bcsub($this->id, '76561197960265728');
                        //If subtraction goes negative, shift value up
                        if ($this->id < 0) {
                            $this->id += 4294967296;
                        }
                  $z = bcdiv($this->id, '2');
              } elseif (is_numeric($this->id)) {
                  $z = bcdiv($this->id, '2');
              } else {
                  return $this->id;
              }
              $y = bcmod($this->id, '2');
              return 'STEAM_0:' . $y . ':' . floor($z);
          }

          public function toUserID() {
              if (preg_match('/^STEAM_/', $this->id)) {
                  $split = explode(':', $this->id);
                  echo $split;
                  return $split[2] * 2 + $split[1];
              } elseif (preg_match('/^765/', $this->id) && strlen($this->id) > 15) {

                        $uid = bcsub($this->id, '76561197960265728');
                        if ($uid < 0) {

                            $uid += 4294967296;
                        }
                        return  $uid;

              } else {
                  return $this->id;

              }
          }

          //Function to sent request to SteamAPI
          private function getCURL($url) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
            curl_setopt($ch, CURLOPT_TIMEOUT, 2);
            $request = curl_exec($ch);
            curl_close($ch);
            $json = json_decode($request, true);
            return $json;
          }

          //Remove end slash if present as well as trailing whitespace
          private function cleanOutput($input) {
            $specialInput = htmlspecialchars(str_replace('/', '', $input));
            $cleanInput = preg_replace('/\s/', '', $specialInput);
            return $cleanInput;
          }

        }

问候:)

共有1个答案

齐修贤
2023-03-14

这样做的正确方法是从函数返回对象并根据需要使用它。请注意,我使用的是PHP速记echo( )。一个更好的方法是使用另一个函数用预期的字符串格式化变量,这样就不需要在HTML中这样做了。

function urlCheck() {
    $input = $_POST["profile_url"];
    if(substr_count($input, ' ') === strlen($input)) {
      echo "Enter URL";

      return false;
    } else {
      return $input;
    }
}

function display() {
    $input = urlCheck();
    if($input) {
      require_once 'steamid.class.php';
      $api_key = "XXXXXXXXXXXX";
      $id = new SteamID($input,$api_key);
        if ($id->resolveVanity()) {
            return $id;
        } else {
            echo "Profile wasn't found!";

            return false;
        }
    }
}

if(isset($_POST['submit']))
{
  $id = display();
}
...
<h1><?= (isset($id)) ? "[U:1:".$id->toUserID()."], " : "" ?></h1>
...
<img onerror="this.style.display='none'" src="<?= (isset($id)) ? {$id->toAvatar()} : "" ?>">

 类似资料:
  • 问题内容: 我想知道是否存在一种实现类似于map getter的功能的方法:它返回返回值作为第一个参数,(可选地分配)第二个值作为第二个参数。因此,我需要可以通过以下方式调用的函数: 问题答案: 不,它无法完成,唯一的选择是返回一个指针并检查它是否为nil。

  • 我被迫在getJSON回调函数中使用该函数之外的数据。看一看: 这就是我尝试的,但是失败了,$值仍然设置为0,尽管在回调中它肯定设置为实际值。我知道为什么它会失败,因为AJAX请求是异步发送的。问题是,正确的方法,做回调里面的一切,是不可能的。如你所见,我需要在raty(插件)设置中检索JSON对象。我只会使用$. ajax()并将其设置为同步,但留档将其标记为1.8不建议使用。我宁愿不引入一个我

  • 问题内容: 我有以下代码: 我要解决的问题是这个,我要在 里面 使用。我该怎么做呢? PS:内部的函数在Go中称为回调吗? 问题答案: 您也可以尝试返回一个函数:

  • 问题内容: 我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。 我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。 在控制台中,显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。 问题答案: 这里的问题是aja

  • 问题内容: 我正在读一本叫做《 Go编程语言》的书,在有关指针的第二章中,写了以下内容 函数返回局部变量的地址是绝对安全的。例如,在下面的代码中,即使调用返回后,由对f的特定调用创建的局部变量v仍将存在,并且指针p仍将引用它: 我完全不明白这一点,应该在执行函数后销毁局部变量。是因为可能v是在堆上分配的。我知道在C语言中,如果您使用malloc分配空间,函数执行后就不会销毁它,因为它在堆上。 问题