RageComics
Cadet 2nd Year
- Registriert
- Juli 2012
- Beiträge
- 31
Hallo miteinander!
Ich habe mir gestern Abend ein Video über MySQL Injections angeguckt. https://www.youtube.com/watch?v=GFvEAbqTREM
Nachdem ich einen Schreck bekommen habe, beschloss ich prepared statements in meine Suchmaschine zu implementieren.
Hier mein Code:
Jetzt habe ich leider mehrere Fehler, die besagen, dass ein Parameter namens mysqli_stmt fehlt. Bin gerade ein bisschen ratlos, zudem ein Freund von mir auch gesagt hat, ich hätte objektorientierten und prozedualen Stil durcheinandergeworfen
Ich würde mich freuen, wenn mir da jemand weiterhelfen könnte.
EDIT:
Ist es sinnvoll neben der prepared statements Methode auch mysqli_real_escape_string(); zu verwenden?
Ich habe mir gestern Abend ein Video über MySQL Injections angeguckt. https://www.youtube.com/watch?v=GFvEAbqTREM
Nachdem ich einen Schreck bekommen habe, beschloss ich prepared statements in meine Suchmaschine zu implementieren.
Hier mein Code:
PHP:
<?php
include('connect.php');
$keywords = $_POST['search'];
if (isset($keywords) && $keywords !="") {
$query = mysqli_query($link, "SELECT 'title' , 'keywords' , 'description' from search WHERE keywords like keywords=? or title like keywords=?");
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, 's', $_POST['search']);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($link);
echo 'Ihre Suche nach <i>'.$keywords.'</i> ergab:<br/>';
$query_exists = false;
while($row = mysqli_fetch_object($query)) {
$keywords_from_db = $row->keywords;
$keywords_from_db = preg_split("#,#",$keywords_from_db);
for($i = 0; isset($keywords_from_db[$i]); $i++) {
if($keywords_from_db[$i] == $keywords) {
$query_exists = true;
echo "<br />";
echo "<a class=\"title\" href=\"".$row->link."\">".$row->title."</a> <br /> <p>".$row->description."</p>";
break;
}
}
}
if(!$query_exists) {
echo "<br /> Es wurden keine Übereinstimmungen gefunden.";
}
}
else {
echo '<br/> Es wurde kein Suchbegriff eingegeben. <br /><br />';
}
?>
/* connect.php */
<?php
$hs = "*";
$us = "*";
$ps = "*";
$db = "*";
$link = mysqli_connect($hs, $us, $ps, $db) or die("Keine Verbindung");
?>
Jetzt habe ich leider mehrere Fehler, die besagen, dass ein Parameter namens mysqli_stmt fehlt. Bin gerade ein bisschen ratlos, zudem ein Freund von mir auch gesagt hat, ich hätte objektorientierten und prozedualen Stil durcheinandergeworfen
Ich würde mich freuen, wenn mir da jemand weiterhelfen könnte.
EDIT:
Ist es sinnvoll neben der prepared statements Methode auch mysqli_real_escape_string(); zu verwenden?
Zuletzt bearbeitet: