Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
cómo crear un motor de búsqueda con mysqli y sintaxis php

Por lo tanto, quiero crear mi propio motor de búsqueda para encontrar datos escribiendo el título en el cuadro de búsqueda y obtener los datos de mi base de datos y el resultado como lo que ingresan los usuarios en el cuadro de búsqueda ... así que aquí está mi código: 1 CÓDIGO HTML (CUADRO DE BÚSQUEDA)

 <form id="hform-search" class="hform-search" method="post" action=""> <input id="search-box" class="form-control" type="text" placeholder=" I want to learn.." name="keyword" autocomplete="off" autofocus="" /> <div id="suggesstion-box"></div> <input type="submit" class="btn btn-default f-tutorials" name="go_t" value="Find Tutorials" /> <input type="submit" class="btn btn-default f-course" name="go_c" value="Find Courses" /> <p class="hero-subtitle"><em>"Let us help you to involve"</em> </p> </div> </form>
  1. CÓDIGO PHP

     $conn = mysqli_connect("localhost","root","","neurorial"); if ($_POST[go_t] == 'Find Tutorials') { $keyword_t = $_POST[keyword]; $find_t = mysqli_query($conn, "SELECT * FROM search WHERE video_tutorial LIKE '%$keyword_t%' "); $check_t = mysqli_num_rows($find_t); if ($check_t == 0) { echo 'sorry the video with this " $keyword_t " keyword is not found'; }else { while ($rows_t=mysqli_fetch_array($find_t) ) { echo "$rows_t[video_tutorial]<br>"; } } } if ($_POST['go_c'] == 'Find Courses') { global $conn; $keyword_c = $_POST['keyword']; $find_c = mysqli_query($conn, "SELECT * FROM search WHERE course LIKE '%$keyword_c%'"); $check_c = mysqli_num_rows($find_c); if ($check_c == 0) { echo "maaf pencarian Course dengan keyword $keyword_c tidak di temukan"; }else { while ($find_c = mysqli_fetch_array($find_c) ) { echo "$find_c[course]<br>"; } } }

Entonces siempre obtuve este resultado:

Aviso: Uso de go_t constante indefinido - asumido 'go_t' en D:\KAMPUS\Server\htdocs\PW\Neuro.inc\index.php en la línea 87

Aviso: Índice indefinido: go_t en D:\KAMPUS\Server\htdocs\PW\Neuro.inc\index.php en la línea 87

Aviso: Índice indefinido: go_c en D:\KAMPUS\Server\htdocs\PW\Neuro.inc\index.php en la línea 100

¿Alguien podría resolver este problema y decirme por qué siempre recibí este error? ¡Gracias por adelantado! :)

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Es porque su código también se ejecuta antes de enviar el formulario

 <?php if ($_POST){ //<------------ Add this condition $conn = mysqli_connect("localhost","root","","neurorial"); if ($_POST['go_t'] == 'Find Tutorials') { //<---------------- change here $keyword_t = $_POST[keyword]; $find_t = mysqli_query($conn, "SELECT * FROM search WHERE video_tutorial LIKE '%$keyword_t%' "); $check_t = mysqli_num_rows($find_t); if ($check_t == 0) { echo 'sorry the video with this " $keyword_t " keyword is not found'; }else { while ($rows_t=mysqli_fetch_array($find_t) ) { echo "$rows_t[video_tutorial]<br>"; } } } if ($_POST['go_c'] == 'Find Courses') { global $conn; $keyword_c = $_POST['keyword']; $find_c = mysqli_query($conn, "SELECT * FROM search WHERE course LIKE '%$keyword_c%'"); $check_c = mysqli_num_rows($find_c); if ($check_c == 0) { echo "maaf pencarian Course dengan keyword $keyword_c tidak di temukan"; }else { while ($find_c = mysqli_fetch_array($find_c) ) { echo "$find_c[course]<br>"; } } } } ?>
over 4 years ago · Santiago Trujillo Relatório

0

Obtiene el error específico que mencionó porque no citó go_t en la segunda línea de su código PHP.

$_POST[go_t] debe ser $_POST['go_t'] .

También debe verificar para asegurarse de que la clave también esté configurada en la matriz; eso hace que sus declaraciones if se vean como las siguientes:

if (isset($_POST['go_t']) && $_POST['go_t'] == 'Find Tutorials') {

if (isset($_POST['go_c']) && $_POST['go_c'] == 'Find Courses') {

Como @b-desai también señaló, también podría agregar la condición if ($_POST) ; pero eso solo significa que el código no se ejecutará en absoluto a menos que la solicitud haya llegado a través de POST.

Sin embargo, tal como está, su código tiene algunas fallas realmente significativas que volverán a morderlo más adelante. Lo que es más importante, está sujeto a inyección SQL, secuencias de comandos entre sitios (XSS) y CSRF. Esto último no lo abordaré aquí, pero deberías investigarlo por ti mismo.

Para abordar la inyección SQL, nunca use cadenas interpoladas en consultas SQL, como lo ha hecho en estas líneas:

$find_t = mysqli_query($conn, "SELECT * FROM search WHERE video_tutorial LIKE '%$keyword_t%' ");

$find_c = mysqli_query($conn, "SELECT * FROM search WHERE course LIKE '%$keyword_c%'");

Por la forma en que están escritos, todo lo que un usuario escriba en su filtro de búsqueda pasará directamente a su base de datos; necesita escapar de eso, o mejor aún, use declaraciones preparadas (Google será su amigo aquí; busque PDO).

Para abordar las secuencias de comandos entre sitios; si no se encuentran resultados de búsqueda, está enviando la palabra clave del usuario directamente al navegador sin escapar. Si agregaron una etiqueta <script> o similar, podrían robar cookies de sus usuarios, o algo peor.

Siempre debe asegurarse de escapar de todos los resultados y siempre asumir que sus usuarios son malintencionados, algunos de ellos lo serán.

Me doy cuenta de que este es solo un pequeño ejemplo, pero advierto que no se debe poner en producción un código de este tipo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda