Kezdőoldal » Számítástechnika » Weblapkészítés » Az alábbi kódban hol a hiba?...

Az alábbi kódban hol a hiba? Elvileg működnie kellene a keresőnek (persze ha megadom az adatbázis adatokat)

Figyelt kérdés

<?php


$button = $_GET ['submit'];

$search = $_GET ['search'];


if(!$button)

echo "Nem adta meg a keresési feltételeket!";

else

{

if(strlen($search)<=1)

echo "A keresett szó túl rövid!";

else{

echo "A következőkre keresett rá: <b>$search</b> <hr size='1'></br>";

mysql_connect("","","");

mysql_select_db("");


$search_exploded = explode (" ", $search);


foreach($search_exploded as $search_each)

{

$x++;

if($x==1)

$construct .="keywords LIKE '%$search_each%'";

else

$construct .="AND keywords LIKE '%$search_each%'";


}


$construct ="SELECT * FROM pinceszet WHERE $construct";

$run = mysql_query($construct);


$foundnum = mysql_num_rows($run);


if ($foundnum==0)

echo "Sajnos nincs találat a következőkre: <b>$search</b>.</br>Ellenőrizze le, hogy helyesen adta e meg a keresett szót!";

else

{

echo "$foundnum results found !<p>";


while($runrows = mysql_fetch_assoc($run))

{

$title = $runrows ['title'];

$desc = $runrows ['description'];

$url = $runrows ['url'];


echo "

<a href='$url'><b>$title</b></a><br>

$desc<br>

<a href='$url'>$url</a><p>

";


}

}


}

}


?>



2015. jún. 24. 09:14
 1/5 Drone007 ***** válasza:

Eltekintve attól, hogy ez a "nemtudomhonnankukázottkód" php elemeket (mysql), felesleges kódokat (foreach kiváltható egyetlen implode-dal), botrányos html és php megoldásokat tartalmaz, ellenőrizetlen adatokkal dolgozik, szintaktikailag nincs benne hiba.

Nem lehetséges, hogy az adatok $_POST-ba érkeznek, és nem $_GET-be?

2015. jún. 24. 10:19
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
hát sajnos mivel minimálisan értek csak a php-hez, ezért kénytelen vagyok megpróbálni összekukázni valami működő dolgot és most keresőt akarok készíteni a weboldalra...
2015. jún. 24. 10:42
 3/5 anonim ***** válasza:

A foreach elé tegyél ilyet:

$construct = "";


Egyrészt ugye lokális változó volt a cikluson belül, így kívül nem volt értéke, másrészt nem volt mihez hozzáfűzni szöveget.


A hozzáfűzéseknél tennék szóközt a string-ben előre és a végére, nehogy az sql összefolyjon és ez legyen a hiba:


$construct .=" keywords LIKE '%$search_each%' ";

else

$construct .=" AND keywords LIKE '%$search_each%' ";


Így első ránézésre ezt tippelném. Hibaüzenetnek, vagy leírásnak, hogy mit produkál örülnénk. Akkor könnyebb volna kitalálni hol a hiba.

2015. jún. 24. 11:44
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
jó kis mysql injection lesz a vége az ilyen kódnak
2015. jún. 24. 11:46
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

mivel írtátok, hogy ez így veszélyes és rossz megoldás ezért nem erőltetném ezt a megoldást. most egy hasonlóval próbálkozom:


<?PHP

##############################

$_MYSQL['HOST'] = ""; // MySQL host

$_MYSQL['USER'] = ""; // MySQL felhasználónév

$_MYSQL['PASSWORD'] = ""; // MySQL jelszó

$_MYSQL['DB'] = ""; // MySQL adatbázis


$_CONF['TABLA'] = "menu"; // Amelyik táblában akarunk keresni

$_CONF['MEZO'] = "text"; // Abba egy bizonyos mezõ amelyben keresünk

##############################


mysql_connect( $_MYSQL['HOST'], $_MYSQL['USER'], $_MYSQL['PASSWORD'] );

mysql_select_db( $_MYSQL['DB'] );


if(!IsSet($_REQUEST['search_text']) || empty($_REQUEST['search_text'])) {

print'

<form method="GET" action="search.php">

<input type="text" name="search_text" size="25">

<input type="Submit" value="Keresés">

</form>';

} else {

$search_text = mysql_escape_string($_REQUEST['search_text']);


$eredmeny = mysql_query("SELECT * FROM ".$_CONF['TABLA']." WHERE ".$_CONF['MEZO']." LIKE '%$search_text%'");


while($sor = mysql_fetch_object($eredmeny))

{


$cim = $sor->cim;

$uzenet = $sor->uzenet;

$datum = $sor->datum;

$id = $sor->id;


echo "<p>".$id.". ".$cim."<hr>".$uzenet."<hr>".$datum."</p>";

}


}

?>


itt látszik, hogy kapcsolódott az adatbázishoz és jelzi is, hogy hány találat van az adott keresőkulcsra a táblában. viszont a tartalmát nem tudom, hogyan kellene kiiratni...


illetve, hogy ez a rész minek van benne:

$cim = $sor->cim;

$uzenet = $sor->uzenet;

$datum = $sor->datum;

$id = $sor->id;

2015. jún. 25. 09:41

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!