Jump to content

Recuperar variavel de javascript para PHP


cadife
Go to solution Solved by MentorDuncan,

Recommended Posts

Boas tarde,

Não estou a conseguir apanhar a variavel nome no verificar2.php que vem do javascript, penso que pode ser um erro simples mas não estou a descobrir.

Agradecia uma ajudita.

 

Index.php
  
   <select id="nomes" name="nomes" >
    <option value="CD01">CD01</option>
    <option value="CD14">CD14</option>
    <option value="CD15">CD15</option>
</select>
   
<img id="imagem" src="" alt="Imagem">

<script src="script.js"></script>
  
 script.js
  
  const selectNomes = document.getElementById('nomes');
const imagem = document.getElementById('imagem');

selectNomes.addEventListener('change', () => {
    const nome = selectNomes.value;
//alert($('#nomes').val());



    const xhr = new XMLHttpRequest();
    xhr.open('POST', 'verificar2.php');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onload = () => {
        if (xhr.status === 200) {
            
             imagem.src = `${xhr.responseText}`;
        } else {
            console.error('Erro ao buscar imagem.');
        }
    };
    xhr.send(`nome=$`);
});

verificar2.php
  
  
<?php
session_start();								 

$nome = $_POST['nome'];
 
// Conectando ao banco de dados

$conexao = mysqli_connect("localhost", "root", "PASS","BD"); 
// Buscando a imagem
$sql = "SELECT foto_painel FROM tb_preco_97 WHERE modelo = '$nome'";



$resultado = mysqli_query($conexao, $sql);
$imagem = mysqli_fetch_assoc($resultado)['foto_painel'];
 
// Fechando a conexão
mysqli_close($conexao);
 
// Retornando a imagem
header('Content-Type: image/jpeg');
echo $imagem;
 
?>

 

Link to comment
Share on other sites

No teu código diria que deves ter 2 questões:

A chamada deveria ser assíncrona (para não bloquear a aplicação):

xhr.open('POST', 'verificar2.php', true);

e não estás propriamente a passar nenhum valor no nome, experimenta

xhr.send('nome=Batatas&tipo=Fritas');

Verifica se não no servidor não chegam duas variáveis POST, nome e tipo, cada uma com o seu valor.

No caso do SQL Injection o que estás a fazer de mal é o facto de não estares a fazer nada. Por exemplo, não estás a ter em atenção ao escape de caracteres especiais do MySQL que podem interferir com a correta execução do comando SQL e com isso começar a fazer leaks de informação da base de dados.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.