Foro de elhacker.net

Programación => 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
  1.  
  2. <?
  3. error_reporting(E_ALL ^ E_NOTICE);
  4. session_name('pLogin');
  5.  
  6. include("function.php");
  7. include("connect.php");
  8. include("getdata.php");
  9.  
  10. $query = mysql_query("select * from prueba where usuario='$usuario'");
  11.   $getname = mysql_fetch_array($query);
  12.   $firstname = $getname["firstname"];
  13.   $lastname =$getname["lastname"];
  14.   $gender= $getname["sexo"];
  15.   $estadocivil=$getname["estadocivil"];
  16.   $pais=$getname["pais"];
  17. ?>
  18.  

y la parte del html asi


Código
  1. <table width="470" height="254" border="1">
  2. <form action="search_results.php" method="post">
  3.  <tr>
  4.    <td width="189">Nombre:</td>
  5.    <td width="265"><?php echo $firstname;?><input type="text" name="firstname" class="main_text_normal" style="width: 100%;"></td>
  6.  </tr>
  7.  <tr>
  8.    <td>Apellido:</td>
  9.    <td><?php echo $lastname;?><input type="text" name="lastname" class="main_text_normal" style="width: 100%;"></td>
  10.  </tr>
  11.  <tr>
  12.    <td>Pais:</td>
  13.    <td><select size=1 NAME='pais'>
  14.  
  15.          <option <?php if ($user_ok[pais]=="Argentina") echo "selected"; ?>>Argentina</option>
  16.          <option <?php if ($user_ok[pais]=="Bolivia") echo "selected"; ?>>Bolivia</option>
  17.          <option <?php if ($user_ok[pais]=="Chile") echo "selected"; ?>>Chile</option>
  18.  <option <?php if ($user_ok[pais]=="Costa Rica") echo "selected"; ?>>Costa Rica</option>
  19.  <option <?php if ($user_ok[pais]=="Cuba") echo "selected"; ?>>Cuba</option>
  20.  <option <?php if ($user_ok[pais]=="Ecuador") echo "selected"; ?>>Ecuador</option>
  21.  <option <?php if ($user_ok[pais]=="El Salvador") echo "selected"; ?>>El Salvador</option>
  22.  <option <?php if ($user_ok[pais]=="Espana") echo "selected"; ?>>Espana</option>
  23.  <option <?php if ($user_ok[pais]=="Guatemala") echo "selected"; ?>>Guatemala</option>
  24.  <option <?php if ($user_ok[pais]=="Guinea Ecuatorial") echo "selected"; ?>>Guinea Ecuatorial</option>
  25.  <option <?php if ($user_ok[pais]=="Honduras") echo "selected"; ?>>Honduras</option>
  26.  <option <?php if ($user_ok[pais]=="México") echo "selected"; ?>>México</option>
  27.  <option <?php if ($user_ok[pais]=="Nicaragua") echo "selected"; ?>>Nicaragua</option>
  28.  <option <?php if ($user_ok[pais]=="Panamá") echo "selected"; ?>>Panamá</option>
  29.  <option <?php if ($user_ok[pais]=="Paraguay") echo "selected"; ?>>Paraguay</option>
  30.  <option <?php if ($user_ok[pais]=="Perú") echo "selected"; ?>>Perú</option>
  31.  <option <?php if ($user_ok[pais]=="Puerto Rico") echo "selected"; ?>>Puerto Rico</option>
  32.  <option <?php if ($user_ok[pais]=="República Dominicana") echo "selected"; ?>>República Dominicana</option>
  33.  <option <?php if ($user_ok[pais]=="Uruguay") echo "selected"; ?>>Uruguay</option>
  34.  <option <?php if ($user_ok[pais]=="Venezuela") echo "selected"; ?>>Venezuela</option>
  35.        </select> </td>
  36.  </tr>
  37.  <tr>
  38.    <td>Estado Civil: </td>
  39.    <td><select size=1 NAME='estadocivil'>
  40.          <option></option>
  41.          <option <?php if ($user_ok[estadocivil]=="Soltero/a") echo "selected"; ?>>Soltero/a</option>
  42.          <option <?php if ($user_ok[estadocivil]=="Divorciado/a") echo "selected"; ?>>Divorciado/a</option>
  43.  </select></td>
  44.  </tr>
  45.  <tr>
  46.    <td>Genero:</td>
  47.    <td><select size=1 NAME='sexo'>
  48.          <option></option>
  49.          <option <?php if ($user_ok[sexo]=="Masculino") echo "selected"; ?>>Masculino</option>
  50.          <option <?php if ($user_ok[sexo]=="Femenino") echo "selected"; ?>>Femenino</option>
  51.  
  52.        </select></td>
  53.  </tr>
  54.  </form>

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


Código
  1. <?
  2.  
  3. error_reporting(E_ALL ^ E_NOTICE);
  4.  
  5. session_name('pLogin');
  6. include('connect.php');
  7. $usuario = $_SESSION['usuario'];
  8.  
  9. $firstname=$_POST['firstname'];
  10. $lastname=$_POST['lastname'];
  11. $estadocivil=$_POST['estadocivil'];
  12. $gender=$_POST['sexo'];
  13. $pais=$_POST['pais'];
  14.  
  15.  
  16.  
  17. $query= mysql_query("select * from prueba where firstname='".$firstname."' AND lastname='".$lastname."'AND sexo='".$gender."' AND estadocivil='".$estadocivil."' AND pais='".$pais."'");
  18.  
  19.  
  20.  
  21. ?>
  22.  
  23.  

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
  1. $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
  1. $query = mysql_query("select * from prueba where usuario='$usuario'");

debiese ser asi:

Código
  1. $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
  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3. session_name('pLogin');
  4.  
  5. include("function.php");
  6. include("connect.php");
  7. include("getdata.php");
  8.  
  9. $query = mysql_query("select * from prueba where usuario='$usuario'");
  10. while($getname = mysql_fetch_array($query))
  11. {
  12.   $firstname = $getname["firstname"];
  13.   $lastname =$getname["lastname"];
  14.   $gender= $getname["sexo"];
  15.   $estadocivil=$getname["estadocivil"];
  16.   $pais=$getname["pais"];
  17. }
  18. ?>


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
  1. <?php
  2. include_once ("connect.php");
  3. include_once ("srh.php");  
  4.  
  5. ?>

el del srh.php:

Código
  1. <?php
  2.  
  3. //Buscador nombre
  4. if (isset($_POST['search_firstname'])){
  5. $query = mysql_query("SELECT firstname FROM prueba WHERE firstname='".$_POST['firstname']."'");
  6.  
  7. if (empty($_POST['firstname'])){
  8. $search_username_message = "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ Debes ingresar un nombre de usuario ]</B></td></tr>";
  9. }
  10. else if (mysql_num_rows($query)==0){
  11. $search_username_message = "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ El usuario no existe ]</B></td></tr>";
  12. }
  13. else {
  14. $search_username_message = "<script>document.location.href='".$_POST['firstname']."'</script>";
  15. }
  16. }
  17.  
  18. //Buscador  del select
  19. if (isset($_POST['search'])){
  20. $search_message = "<script>document.location.href='search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."'</script>";
  21. }
  22. ?>


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
  1. ?php
  2.  
  3.  
  4. include_once ("connect.php");
  5. include_once("srh.php");
  6.  
  7. if(!isset($_POST['page'])){
  8. $page = 1;
  9. } else {
  10. $page = $_POST['page'];
  11. }
  12. $max_results = 3;
  13. $from = (($page * $max_results) - $max_results);
  14.  
  15. $query = mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."'  AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from, $max_results");
  16. if (mysql_num_rows($query)==0){
  17. echo "<span class=\"pages\"><center><B>No hay resultados[ <a href=\"search.php\" class=\"pages\">Atras</a> ]</B></center></span>";
  18. } else {
  19. $col = 0;
  20. echo '<tr>';
  21. while ($user_ok = mysql_fetch_array($query)){
  22.  
  23. if ($user_ok['gender']=='4'){
  24. echo 'Femenino';
  25. } else {
  26. echo 'Masculino';
  27. }
  28.  
  29. $col++;
  30. if ($col==3){
  31. echo "</tr><tr>";
  32. $col = 0;
  33. }
  34. }
  35. }
  36.  
  37.  
  38. $query = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM prueba WHERE sexo='".$_POST['gender']."'  AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."'"),0);
  39.  $total_pages = ceil($query / $max_results);
  40.  
  41.  if($page > 1){
  42.  $prev = ($page - 1);
  43.  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> ";
  44.  }
  45.  for($i = 1; $i <= $total_pages; $i++){
  46.  if(($page) == $i){
  47.  echo "$i ";
  48.  } else {
  49.  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> ";
  50. }
  51. }
  52.  
  53. if($page < $total_pages){
  54. $next = ($page + 1);
  55. 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>";
  56. }
  57. echo "</center>";
  58. ?>



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
  1. <?php
  2.  
  3.  
  4.  
  5.  
  6.  
  7. error_reporting(E_ALL ^ E_NOTICE);
  8. session_name('pLogin');
  9. include_once ("connect.php");
  10.  
  11.  
  12. $usuario=$_SESSION['usuario'];
  13.  
  14.  
  15. if(!isset($usuario)){
  16.  
  17. echo 'No se ha seleccionado ningun usuario.';
  18.  
  19. }else{
  20.  
  21.  
  22. $query=mysql_query("SELECT * FROM prueba WHERE usuario='$_SESSION[usuario]' ");
  23.  
  24. if(mysql_num_rows($query)>0){
  25. $user_ok=mysql_fetch_array($query);
  26.  
  27.  
  28.  
  29.  
  30.  
  31. //todo comprobado, ahora solo falta mostrar los datos
  32. echo 'Bienvenid@ <b>'.$user_ok['usuario'].'</b><br>';
  33.  
  34. }else{
  35.  
  36. echo 'La id de usuario seleccionada no existe';
  37. }
  38. }
  39.  
  40. function getsqlrow($query) {
  41. $result = mysql_query($query) or die(mysql_error());
  42. $row = mysql_fetch_array($result);
  43. return $row;
  44. }
  45.  
  46. function getsqlnumber($sqlQuery) {
  47. $query=mysql_query($sqlQuery);
  48. $result=mysql_num_rows($query);
  49. return $result;
  50. }
  51.  
  52.  
  53. if(!isset($_GET['page'])){
  54. $page = 1;
  55. } else {
  56. $page = $_GET['page'];
  57. }
  58. $max_results = 10;
  59. $from = (($page * $max_results) - $max_results);
  60.  
  61. $query = mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from, $max_results");
  62.  
  63. if (mysql_num_rows($query)==0){
  64. } else {
  65.  
  66. while ($user_ok = mysql_fetch_array($query)){
  67.  
  68. $get_result_row = getsqlrow("SELECT * FROM prueba WHERE usuario='".$user_ok['usuario']."'");
  69.  
  70.  
  71.  
  72. $result_ocupacion = getsqlnumber("SELECT * FROM prueba WHERE ocupacion='".$user_ok['ocupacion']."'");
  73.  
  74. $result_hijos = getsqlnumber("SELECT * FROM prueba WHERE hijos='".$user_ok['hijos']."'");
  75.  
  76. }
  77. }
  78.  
  79. $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);
  80. $total_pages = ceil($result / $max_results);
  81.  
  82. if($page > 1){
  83. $prev = ($page - 1);
  84. 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>";
  85. }
  86.  
  87. for($i = 1; $i <= $total_pages; $i++){
  88. if(($page) == $i){
  89. echo "$i ";
  90. } else {
  91. 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> ";
  92. }
  93. }
  94.  
  95. if($page < $total_pages){
  96. $next = ($page + 1);
  97. 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>";
  98. }
  99. echo "</center>";
  100.  
  101.  
  102.  
  103.  
  104.  
  105. ?>


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