Quais as alternativas corretas da questões sobre formulário com PHP?

questões forms php

Veja abaixo as analises completas de duas questões sobre o uso de formulário com PHP.

Considere o seguinte formulário HTML: 

 <form action="salvar.php" method="post"> 

 Nome: <input type="text" name="nome"/> <br/> 

 Telefone: <input type="text" name="telefone"/> <br/> 

 <input type="submit" value="ok"/> 

 </form> 

 Assinale a alternativa que contém o código PHP capaz de salvar corretamente os dados digitados pelo usuário em uma tabela no banco de dados MySQL. Alternativas: 

 a) <?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_GET["nome"]; $fone = $_GET["telefone"]; $sql = "INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?> 

 b) <?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT contato SET nome='$nome', telefone='$fone'"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?> 

 c) <?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?> 

 d) <?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT INTO contato (nome, telefone) SET ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?> 

 e) <?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $sql = "INSERT INTO contato (nome, telefone) VALUES ('$_POST["nome"]', '$_POST["telefone"]')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>

Para resolver a questão sobre como salvar corretamente os dados digitados pelo usuário em um formulário HTML em uma tabela no banco de dados MySQL usando PHP, precisamos analisar cada uma das alternativas fornecidas.

Análise das Alternativas

Alternativa a)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_GET["nome"]; $fone = $_GET["telefone"]; $sql = "INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>
  • Incorreto: Esta alternativa utiliza $_GET para obter os dados do formulário, mas o formulário HTML está usando o método post, então os dados não estarão disponíveis em $_GET. Eles deveriam ser acessados via $_POST.

Alternativa b)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT contato SET nome='$nome', telefone='$fone'"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>
  • Incorreto: Esta alternativa utiliza $_POST, o que está correto. No entanto, a sintaxe SQL INSERT contato SET nome='$nome', telefone='$fone' está incorreta. A sintaxe correta deveria ser INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone').

Alternativa c)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>
  • Correto: Esta alternativa usa $_POST para obter os dados, o que está correto. A sintaxe SQL está correta: INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone').

Alternativa d)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT INTO contato (nome, telefone) SET ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>
  • Incorreto: Esta alternativa usa $_POST, o que está correto. No entanto, a sintaxe SQL INSERT INTO contato (nome, telefone) SET ('$nome', '$fone') está incorreta. A sintaxe correta deveria ser INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone').

Alternativa e)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $sql = "INSERT INTO contato (nome, telefone) VALUES ('$_POST["nome"]', '$_POST["telefone"]')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>
  • Incorreto: Esta alternativa tenta usar $_POST diretamente dentro da string SQL, mas as aspas duplas dentro da string não estão corretamente escapadas. A forma correta seria concatenar os valores ou usar variáveis.

Resposta Correta

A alternativa correta que contém o código PHP capaz de salvar corretamente os dados digitados pelo usuário em uma tabela no banco de dados MySQL é:

c)

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; $sql = "INSERT INTO contato (nome, telefone) VALUES ('$nome', '$fone')"; if (mysqli_query($con, $sql)) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($con); } ?>

Melhorias e Segurança

Embora a alternativa c) esteja correta, é importante mencionar que concatenar diretamente variáveis no SQL pode deixar o código vulnerável a injeção de SQL. Uma abordagem mais segura seria usar prepared statements. Aqui está um exemplo melhorado:

<?php $con = mysqli_connect("localhost", "root", "senha", "meubd"); $nome = $_POST["nome"]; $fone = $_POST["telefone"]; // Prepared statement $stmt = $con->prepare("INSERT INTO contato (nome, telefone) VALUES (?, ?)"); $stmt->bind_param("ss", $nome, $fone); if ($stmt->execute()) { echo "Novo registro inserido com sucesso!"; } else { echo "Erro: " . $stmt->error; } $stmt->close(); $con->close(); ?>

Usando prepared statements, o código se torna mais seguro contra ataques de injeção de SQL.

5) Considere o seguinte formulário em que o usuário irá digitar o valor de um produto: Valor: Assinale a alternativa que contém o código que é capaz de salvar o valor digitado pelo usuário na sessão. Selecione uma alternativa: 

 a) session_start($_POST["valor"]); ?> 

 b) session_start(); setsession("valor", $_POST["valor"]); ?> 

 c) session_start(); set_session("valor", $_POST["valor"]); ?> 

 d) session_start(); $_SESSION["valor"] = $_POST["valor"]; ?> 

 e) session_open(); $_SESSION["valor"] = $_POST["valor"]; ?>

Para resolver essa questão sobre como salvar o valor digitado pelo usuário em uma sessão, vamos analisar cada uma das alternativas fornecidas.

Análise das Alternativas

Alternativa a)

session_start($_POST["valor"]); ?>
  • Incorreto: A função session_start() é usada para iniciar uma sessão, mas ela não aceita argumentos. Passar $_POST["valor"] como argumento é inválido.

Alternativa b)

session_start(); setsession("valor", $_POST["valor"]); ?>
  • Incorreto: A função setsession() não existe em PHP. O método correto para definir uma variável de sessão é usar a superglobal $_SESSION.

Alternativa c)

session_start(); set_session("valor", $_POST["valor"]); ?>
  • Incorreto: Similar à alternativa b, a função set_session() não existe em PHP. Para definir uma variável de sessão, deve-se usar $_SESSION.

Alternativa d)

session_start(); $_SESSION["valor"] = $_POST["valor"]; ?>
  • Correto: Esta alternativa usa session_start() para iniciar a sessão e depois utiliza $_SESSION para armazenar o valor digitado pelo usuário. Isso está correto.

Alternativa e)

session_open(); $_SESSION["valor"] = $_POST["valor"]; ?>
  • Incorreto: A função session_open() não existe em PHP. A função correta para iniciar uma sessão é session_start().

Resposta Correta

A alternativa correta que contém o código capaz de salvar o valor digitado pelo usuário na sessão é:

d)

session_start(); $_SESSION["valor"] = $_POST["valor"]; ?>

Explicação Detalhada

  1. Iniciando a Sessão: session_start() é a função correta para iniciar uma sessão. Sem essa chamada, a superglobal $_SESSION não estará disponível.

  2. Armazenando Valores na Sessão: Para armazenar valores na sessão, utiliza-se a superglobal $_SESSION. Neste caso, $_SESSION["valor"] é atribuído ao valor fornecido pelo usuário através de $_POST["valor"].

Melhorias e Segurança

Para melhorar a segurança e evitar possíveis problemas com a entrada do usuário, recomenda-se validar e sanitizar o valor recebido através de $_POST. Aqui está um exemplo aprimorado:

session_start(); if (isset($_POST["valor"]) && is_numeric($_POST["valor"])) { $_SESSION["valor"] = $_POST["valor"]; echo "Valor salvo na sessão com sucesso."; } else { echo "Por favor, insira um valor numérico válido."; } ?>

Neste exemplo, verificamos se o valor está presente em $_POST e se é numérico antes de salvá-lo na sessão. Isso ajuda a evitar problemas com entradas inválidas.

Quer acompanhar as novidade do site?

Leia mais em: ww.php.net/manual/en/tutorial...

Quais as alternativas corretas da questões sobre formulário com PHP?

Última atualização: 2024-06-02

Palavras-Chaves