Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: den_22 en 3 Abril 2010, 04:59 AM

Título: Haciendo un buscador
Publicado por: den_22 en 3 Abril 2010, 04:59 AM
Hola que tal, estoy tratando de hacer un buscador tengo este archivo search.php, que la parte del php es algo asi:

Código (php) [Seleccionar]

<?
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();

include("function.php");
include("connect.php");
include("getdata.php");

$query = mysql_query("select * from prueba where usuario='$usuario'");
   $getname = mysql_fetch_array($query);
   $firstname = $getname["firstname"];
   $lastname =$getname["lastname"];
   $gender= $getname["sexo"];
   $estadocivil=$getname["estadocivil"];
   $pais=$getname["pais"];
?>


y la parte del html asi


Código (php) [Seleccionar]
<table width="470" height="254" border="1">
<form action="search_results.php" method="post">
  <tr>
    <td width="189">Nombre:</td>
    <td width="265"><?php echo $firstname;?><input type="text" name="firstname" class="main_text_normal" style="width: 100%;"></td>
  </tr>
  <tr>
    <td>Apellido:</td>
    <td><?php echo $lastname;?><input type="text" name="lastname" class="main_text_normal" style="width: 100%;"></td>
  </tr>
  <tr>
    <td>Pais:</td>
    <td><select size=1 NAME='pais'>
         
          <option <?php if ($user_ok[pais]=="Argentina") echo "selected"?>>Argentina</option>
          <option <?php if ($user_ok[pais]=="Bolivia") echo "selected"?>>Bolivia</option>
          <option <?php if ($user_ok[pais]=="Chile") echo "selected"?>>Chile</option>
  <option <?php if ($user_ok[pais]=="Costa Rica") echo "selected"?>>Costa Rica</option>
  <option <?php if ($user_ok[pais]=="Cuba") echo "selected"?>>Cuba</option>
  <option <?php if ($user_ok[pais]=="Ecuador") echo "selected"?>>Ecuador</option>
  <option <?php if ($user_ok[pais]=="El Salvador") echo "selected"?>>El Salvador</option>
  <option <?php if ($user_ok[pais]=="Espana") echo "selected"?>>Espana</option>
  <option <?php if ($user_ok[pais]=="Guatemala") echo "selected"?>>Guatemala</option>
  <option <?php if ($user_ok[pais]=="Guinea Ecuatorial") echo "selected"?>>Guinea Ecuatorial</option>
  <option <?php if ($user_ok[pais]=="Honduras") echo "selected"?>>Honduras</option>
  <option <?php if ($user_ok[pais]=="México") echo "selected"?>>México</option>
  <option <?php if ($user_ok[pais]=="Nicaragua") echo "selected"?>>Nicaragua</option>
  <option <?php if ($user_ok[pais]=="Panamá") echo "selected"?>>Panamá</option>
  <option <?php if ($user_ok[pais]=="Paraguay") echo "selected"?>>Paraguay</option>
  <option <?php if ($user_ok[pais]=="Perú") echo "selected"?>>Perú</option>
  <option <?php if ($user_ok[pais]=="Puerto Rico") echo "selected"?>>Puerto Rico</option>
  <option <?php if ($user_ok[pais]=="República Dominicana") echo "selected"?>>República Dominicana</option>
  <option <?php if ($user_ok[pais]=="Uruguay") echo "selected"?>>Uruguay</option>
  <option <?php if ($user_ok[pais]=="Venezuela") echo "selected"?>>Venezuela</option>
        </select> </td>
  </tr>
  <tr>
    <td>Estado Civil: </td>
    <td><select size=1 NAME='estadocivil'>
          <option></option>
          <option <?php if ($user_ok[estadocivil]=="Soltero/a") echo "selected"?>>Soltero/a</option>
          <option <?php if ($user_ok[estadocivil]=="Divorciado/a") echo "selected"?>>Divorciado/a</option>
  </select></td>
  </tr>
  <tr>
    <td>Genero:</td>
    <td><select size=1 NAME='sexo'>
          <option></option>
          <option <?php if ($user_ok[sexo]=="Masculino") echo "selected"?>>Masculino</option>
          <option <?php if ($user_ok[sexo]=="Femenino") echo "selected"?>>Femenino</option>
         
        </select></td>
  </tr>
  </form>


ahora bien, al hacer click en buscar, llama al archivo search_results.php que es el siguiente:


Código (php) [Seleccionar]

<?

error_reporting(E_ALL ^ E_NOTICE);

session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include('connect.php');
$usuario = $_SESSION['usuario'];

$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$estadocivil=$_POST['estadocivil'];
$gender=$_POST['sexo'];
$pais=$_POST['pais'];



$query= mysql_query("select * from prueba where firstname='".$firstname."' AND lastname='".$lastname."'AND sexo='".$gender."' AND estadocivil='".$estadocivil."' AND pais='".$pais."'");
   


?>



en el html de este archivo hago un <?php echo $firstname;?>, por ejemplo.

Mi pregunta es, en qué estoy fallando porque no me busca ningun usuario. Está bien como lo estoy haciendo?

De antemano gracias, solo busco algo de orientacion.
Título: Re: Haciendo un buscador
Publicado por: Shell Root en 3 Abril 2010, 05:06 AM
Emmm, dentro del archivo search.php, se supone que donde esta seteada la variable $usuario.

PD: This application has iSQL and XSS.  :silbar:
Título: Re: Haciendo un buscador
Publicado por: ~ Yoya ~ en 3 Abril 2010, 05:07 AM
Hay algunos temas sobre crear un buscador en el foro, usa el buscador del foro.
Título: Re: Haciendo un buscador
Publicado por: den_22 en 3 Abril 2010, 05:10 AM
Si, me olvidé de declarar la variable, pero igual no funciona. Gracias por responder
Título: Re: Haciendo un buscador
Publicado por: Shell Root en 3 Abril 2010, 05:15 AM
Bueno, no me referia a la declaración de la variable, sino del SETEO, es decir, en donde le dás valor a esa variable. Supongo que desde allì parte la consulta!
Título: Re: Haciendo un buscador
Publicado por: den_22 en 3 Abril 2010, 05:26 AM
Algo asi?

if(!isset($usuario)){

echo 'No se ha seleccionado ningun usuario.';

}else{

Por que razon no se llegan a mostrar los resultados de los usuarios de la bd, cuando hago el select * from existe algo mal?, porque los datos los paso por post.

Título: Re: Haciendo un buscador
Publicado por: Shell Root en 3 Abril 2010, 05:30 AM
Supongo que deberia ser
Código (php) [Seleccionar]
$usuario = $_SESSION['usuario'];

Deberias de usar la tecnica del miron... :P, mostrar el query en un echo, para ver que valores estas pasando y cuales no, además de ejecutarlo en el MySQL, a ver si trae resultados.
Título: Re: Haciendo un buscador
Publicado por: ~ Yoya ~ en 3 Abril 2010, 05:32 AM
usa la sentencia while y trata de no usar variables, si no datos fijos y hay sabrás si podría ser que las variables no tenga algún contenido.
Título: Re: Haciendo un buscador
Publicado por: den_22 en 3 Abril 2010, 05:39 AM
Bueno eso fue lo que hice, pero nada... Tal vez estoy haciendo algo mal en el show_results.php y por eso no se muestran los datos de otros usuarios.
Título: Re: Haciendo un buscador
Publicado por: ~ Yoya ~ en 3 Abril 2010, 05:40 AM
y usaste la sentencia while?
Título: Re: Haciendo un buscador
Publicado por: SeC en 3 Abril 2010, 05:55 AM
En el search.php no concatenas en la formulacion de la consulta:

Código (php) [Seleccionar]
$query = mysql_query("select * from prueba where usuario='$usuario'");

debiese ser asi:

Código (php) [Seleccionar]
$query = mysql_query("select * from prueba where usuario='".$usuario."'");
Título: Re: Haciendo un buscador
Publicado por: Shell Root en 3 Abril 2010, 05:57 AM
SeC, hasta donde tengo entendido dá igual si conctatenas o no, igual se toma como variable, ya que se antepone de un $!

PD: O soy muy idiota o no sé, pero solo veo que ejecutas la sentencia SQL, en donde Fuck, muestras los valores que devolvio la consulta!
Título: Re: Haciendo un buscador
Publicado por: ~ Yoya ~ en 3 Abril 2010, 06:20 AM
Usa la sentencia while y trata de ver mas documentación sobre las funciones que utilizas.

Código (php) [Seleccionar]
<?php
error_reporting
(E_ALL E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
 
include(
"function.php");
include(
"connect.php");
include(
"getdata.php");
 
$query mysql_query("select * from prueba where usuario='$usuario'");
while(
$getname mysql_fetch_array($query))
{
   
$firstname $getname["firstname"];
   
$lastname =$getname["lastname"];
   
$gender$getname["sexo"];
   
$estadocivil=$getname["estadocivil"];
   
$pais=$getname["pais"];
}
?>
Título: Re: Haciendo un buscador
Publicado por: Castg! en 3 Abril 2010, 18:29 PM
mira gabi, no es de forro, pero siempre estas teniendo los mismo problemas en tus codigos, o te flata declarar variables, o errores muy basicos, asi, porq no mejor lees algun buen tutorial de php? porq este tipo de errores son de los primeros capitulos.
Título: Re: Haciendo un buscador
Publicado por: fede_cp en 3 Abril 2010, 19:36 PM
usa un buscador powered by google  :xD, na pero hacer un buscador tiene miles de errores si lo haces caseramente, puede haber desde sql i a xss, ese codigo lo hiciste vos?


saludos
Título: Re: Haciendo un buscador
Publicado por: den_22 en 4 Abril 2010, 21:51 PM
Bueno gracias, por haber contestado, Castg!, trataré de buscar algun tutorial, la otra vez, seguí tu consejo y lo pude resolver, al problema que tenia.

fede_cp, bueno buscaré alguno made in google, jaja, veremos...

Gracias.


den_22
Título: Re: Haciendo un buscador
Publicado por: den_22 en 12 Abril 2010, 00:06 AM
Hola nuevamente, al final pude hacer un buscador, que puede buscar por palabras, o sea nombre de usuario. El tema es que no me sale el del select.
Dejo los codigos, a ver cual es la cuestion de que no busque con el select.

el search.php tiene este codigo:

Código (php) [Seleccionar]

<?php
include_once ("connect.php");
include_once (
"srh.php");  

?>


el del srh.php:

Código (php) [Seleccionar]

<?php

//Buscador nombre
if (isset($_POST['search_firstname'])){
$query mysql_query("SELECT firstname FROM prueba WHERE firstname='".$_POST['firstname']."'");

if (empty(
$_POST['firstname'])){
$search_username_message "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ Debes ingresar un nombre de usuario ]</B></td></tr>";
}
else if (
mysql_num_rows($query)==0){
$search_username_message "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ El usuario no existe ]</B></td></tr>";
}
else {
$search_username_message "<script>document.location.href='".$_POST['firstname']."'</script>";
}
}

//Buscador  del select
if (isset($_POST['search'])){
$search_message "<script>document.location.href='search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."'</script>";
}
?>



el form del search.php tiene un action asi  members_search_index.php?search=firstname  y en el html pongo algo asi <?php echo $user_ok['firstname'];?>  para que aparezcan los datos.


Ahora, lo que no me sale es el buscador del select

aca está el codigo del search_results.php:

Código (php) [Seleccionar]
?php


include_once ("connect.php");
include_once("srh.php");

if(!isset($_POST['page'])){
$page = 1;
} else {
$page = $_POST['page'];
}
$max_results = 3;
$from = (($page * $max_results) - $max_results);

$query = mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."'  AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from, $max_results");
if (mysql_num_rows($query)==0){
echo "<span class=\"pages\"><center><B>No hay resultados[ <a href=\"search.php\" class=\"pages\">Atras</a> ]</B></center></span>";
} else {
$col = 0;
echo '<tr>';
while ($user_ok = mysql_fetch_array($query)){

if ($user_ok['gender']=='4'){
echo 'Femenino';
} else {
echo 'Masculino';
}

$col++;
if ($col==3){
echo "</tr><tr>";
$col = 0;
}
}
}


$query = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM prueba WHERE sexo='".$_POST['gender']."'  AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."'"),0);
 $total_pages = ceil($query / $max_results);
 
 if($page > 1){
 $prev = ($page - 1);
 echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$prev\"><font color=\"black\"><B>Anterior</B></font></a> ";
 }
 for($i = 1; $i <= $total_pages; $i++){
 if(($page) == $i){
 echo "$i ";
 } else {
 echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$i\"><font color=\"black\"><B>$i</B></font></a> ";
}
}

if($page < $total_pages){
$next = ($page + 1);
echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$next\"><font color=\"black\"><B>Siguiente</B></font></a>";
}
echo "</center>";
?>




Gracias de antemano.

den_22
Título: Re: Haciendo un buscador
Publicado por: den_22 en 13 Abril 2010, 04:44 AM
Hola, bueno posteo lo que tengo hasta ahora, no pido que hagan el codigo, solamente que me guien un poquito  :-( , gracias.


Código (php) [Seleccionar]
<?php





error_reporting
(E_ALL E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include_once (
"connect.php");


$usuario=$_SESSION['usuario'];


if(!isset(
$usuario)){

echo 
'No se ha seleccionado ningun usuario.';

}else{


$query=mysql_query("SELECT * FROM prueba WHERE usuario='$_SESSION[usuario]' ");

if(
mysql_num_rows($query)>0){
$user_ok=mysql_fetch_array($query);





//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$user_ok['usuario'].'</b><br>';

}else{

echo 
'La id de usuario seleccionada no existe';
}
}

function 
getsqlrow($query) {
$result mysql_query($query) or die(mysql_error());
$row mysql_fetch_array($result);
mysql_free_result($result);
return 
$row;
}

function 
getsqlnumber($sqlQuery) {
$query=mysql_query($sqlQuery);
$result=mysql_num_rows($query);
mysql_free_result($query);
return 
$result;
}


if(!isset(
$_GET['page'])){
$page 1;
} else {
$page $_GET['page'];
}
$max_results 10;
$from = (($page $max_results) - $max_results);

$query mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from$max_results");

if (
mysql_num_rows($query)==0){
} else {

while (
$user_ok mysql_fetch_array($query)){

$get_result_row getsqlrow("SELECT * FROM prueba WHERE usuario='".$user_ok['usuario']."'");



$result_ocupacion getsqlnumber("SELECT * FROM prueba WHERE ocupacion='".$user_ok['ocupacion']."'");

$result_hijos getsqlnumber("SELECT * FROM prueba WHERE hijos='".$user_ok['hijos']."'");

}
}

$total_results mysql_result(mysql_query("SELECT COUNT(*) as Num FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."'"),0);
$total_pages ceil($result $max_results);

if(
$page 1){
$prev = ($page 1);
echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$prev&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">Previous</a>";
}

for(
$i 1$i <= $total_pages$i++){
if((
$page) == $i){
echo 
"$i ";
} else {
echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$i&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">$i</a> ";
}
}

if(
$page $total_pages){
$next = ($page 1);
echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$next&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">Next</a>";
}
echo 
"</center>";





?>
Título: Re: Haciendo un buscador
Publicado por: Shell Root en 13 Abril 2010, 05:02 AM
jejeje Seria más facil si plantearas la duda y/o la linea de codigo en la que tenes problemas.

PD: Intenta filtrar, manejar las variables, yá que creo que se puede realizar un iSQL y XSS...