Estoy haciendo una herramienta para convertir las URL de perfil de vapor a los diferentes identificadores de vapor, lo que sea. Tengo las diferentes funciones, que se activan al enviar la URL del perfil con un formulario.

Una de las funciones es que obtiene el avatar del perfil de Steam correspondiente. En realidad obtiene el enlace de la imagen. Lo que puedo hacer es, hacer eco de un elemento img con el enlace, esto no me dará ninguna flexibilidad, ya que no podré realmente diseñar, etc., eso después. Ahora, la función de obtener el avatar está en función del formulario de envío.

Intenté insertar la URL de la imagen en un elemento img.

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

Bueno, entonces recibo un mensaje de error que dice que "$ avatar" no está definido, aunque lo definí en mis etiquetas php principales. Creo que eso se debe al hecho de que se hace dentro de la función de formulario, aunque podría estar equivocado.

Mi pregunta principal ahora es, ¿cuál podría ser un enfoque diferente para esto? Necesito eso en la función de formulario porque solo debería llamarse entonces. Tal vez solo tenga que usar la forma inconveniente de hacer eco de un elemento img cada vez.

Aquí está el código real.

 <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>

La parte principal de 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!";
    }
  }
}
0
rexsurrection 21 feb. 2020 a las 00:33

2 respuestas

La mejor respuesta

Estoy refactorizando mi respuesta en función de la conversación que tuvimos. Aquí está el código PHP recomendado.

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!";
    }
  }
}

No ha mencionado dónde está ejecutando display() o dónde espera que se muestre la salida (eco). Solo puedo suponer que lo quieres en la parte superior de la página. Déjame explicarte cómo usar esto.

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

Básicamente, la forma en que esto funciona es que donde sea que ejecute display(), es donde saldrán los ecos (en este caso, antes del cuerpo). Donde sea que haga eco $avatar es donde se mostrará el id. Espero que esto funcione para ti.

0
EternalHour 20 feb. 2020 a las 23:18

Eche un vistazo a Ámbito variable de PHP

Cualquier variable utilizada dentro de una función está limitada por defecto al alcance de la función local.

Para solucionar este problema, use la palabra clave global. De esta manera, establecerá explícitamente $avatar; como una variable global para que pueda usarse fuera de su función display().

Así es como funcionaría para su ejemplo:

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>
0
Bijan 20 feb. 2020 a las 22:55