Другой способ отображения изображения, когда есть только ссылка с php - PullRequest
0 голосов
/ 21 февраля 2020

Я создаю инструмент для преобразования URL-адресов паровых профилей в различные паровые идентификаторы. У меня есть различные функции, срабатывающие при отправке URL профиля с формой.

Одна из функций заключается в том, что он получает аватар соответствующего профиля Steam. На самом деле он получает ссылку на изображение. То, что я могу сделать, это передать элемент img со ссылкой, это не даст мне никакой гибкости, так как я не смогу по-настоящему стилизовать это и далее c. Теперь функция получения аватара находится в функции формы отправки.

Я попытался просто вставить URL-адрес изображения в элемент img.

<img src"<?php echo $avatar ?>">

Ну, тогда я получаю сообщение об ошибке, в котором говорится, что $ avatar не определено, хотя я определил его в моих основных тегах php. Я думаю, что это из-за того, что это делается внутри функции формы, может быть ошибочным.

Мой главный вопрос сейчас, какой может быть другой подход к этому? Мне нужно это в функции формы, потому что она должна вызываться только тогда. Может быть, мне просто нужно использовать неудобный способ отображения элемента img каждый раз.

Вот фактический код.

 <form method="post">
      <input type="text" name="profile_url">
      <input type="submit" value="click" name="submit">
 </form>
 <div id="avatar-div" style="height:100px; width:100px;">
 <img src="<?php echo $avatar; ?>">
 </div>

основной php часть

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

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


if(substr_count($input, ' ') === strlen($input)) {
    echo "Enter URL";
} else {

    if ($id->resolveVanity()) {

    $avatar = $id->toAvatar();



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

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

    $userid = '[U:1:'.$id->toUserID().']';
    echo $userid . ", " . " ";
    } else {
        echo "Profile wasnt found!";
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Я рефакторинг своего ответа на основе нашего разговора. Вот рекомендуемый PHP код.

function urlCheck() {
    $input = $_POST["profile_url"];

    if(empty($input)) {
      echo "Enter URL";

      return false;
    } else {
      return true;
    }
}

function display() {
  require_once 'steamid.class.php';
  $api_key = "xxxxxxxxxxxxxxx";
  $id = new SteamID($input,$api_key);

  if (urlCheck()) {

    if ($id->resolveVanity()) {

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

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

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

      return $id->toAvatar();

    } else {
        echo "Profile wasn't found!";
    }
  }
}

Вы не упомянули, где вы запускаете display(), или где вы ожидаете, что вывод (эхо) будет отображаться. Я могу только предположить, что вы хотите это в верхней части страницы. Позвольте мне объяснить, как это использовать.

<head>
  $avatar = display();
</head>
<body>
  <div id="avatar-div" style="height:100px; width:100px;">
    <img src="<?= $avatar ?>">
  </div>
</body>

По сути, это работает так: везде, где вы запускаете display(), именно там будут выводиться эхо-сигналы (в данном случае, перед телом). Где бы вы ни повторили $avatar, там будет отображаться id. Я надеюсь, что это работает для вас.

0 голосов
/ 21 февраля 2020

Взгляните на PHP Область переменных

Любая переменная, используемая внутри функции, по умолчанию ограничена областью локальной функции.

Чтобы решить эту проблему, используйте ключевое слово global. Таким образом, вы явно зададите $avatar; как глобальную переменную, чтобы ее можно было использовать за пределами вашей функции display().

Вот как это будет работать для вашего примера:

function display() {
    global $avatar;
    // Rest of your display() function
    // Set $avatar somewhere in here
}

display(); // Actually call display so $avatar is set

<div id="avatar-div" style="height:100px; width:100px;">
 <img src="<?=$avatar;?>">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...