2016-12-19 3 views
-3

Ich erstelle eine Suchleiste auf meiner Website, so dass Benutzer nach anderen Benutzern suchen können und es funktioniert, aber wenn ich einen Benutzernamen eingeben, werden alle Benutzernamen angezeigt. Wie kann ich nur den Benutzer anzeigen, den ich suche und wenn der Benutzer nicht registriert ist, geben Sie eine andere Aussage ein?PHP Benutzersuche

search.php:

<?php 
include("connect.php"); 

GLOBAL $usernam; 

$output = ''; 

if(isset($_POST['Search'])) { 

if (empty($_POST["searchbar"])) { 
echo"You didn't enter anything . "; 
} else { 

$searchq = $_POST['Search']; 
$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); 

$query = mysqli_query($conn ,"SELECT * FROM users WHERE usernam LIKE '%$searchq%'") or die("Could not search"); 
$count = mysqli_num_rows($query); 

if($count == 0){ 

    echo "There was no search results . "; 

} else { 

    while($row = mysqli_fetch_array($query)) { 
     $usernam = $row['usernam']; 
     $id = $row['id']; 
     $output .= '<div>' .$usernam. '</div>'; 
    } 

    }  
} 
} 
?> 
<html> 
<head> 
<title>Interpage</title> 
</head> 
<body> 

<?php print("$output"); ?> 
</body> 
</html> 
+0

Willst du nicht '$ searchq = $ _POST ['searchbar'];' nicht '$ searchq = $ _POST ['Search'];'? – Sean

+0

'Suche' ist der Name meiner Schaltfläche. 'searchbar' ist der Name der Suchleiste – mrpunani

+0

Exactly. Mit '$ searchq = $ _POST ['Search'];' suchst du nach '" SELECT * FROM Usern WHERE usernam LIKE '% $ _ POST [' Search ']%' "' (deine Schaltfläche), aber ich nehme dich eigentlich an möchte suchen "" SELECT * FROM Benutzer WHERE Benutzername LIKE '% $ _ POST [' searchbar ']%' "(Ihre Suchleiste). Deshalb empfehle ich, zu '$ searchq = $ _POST ['Search'];' (Ihr Suchbarwert) – Sean

Antwort

2

Ihr Problem ist, dass Sie zur Zeit den Wert Ihrer Taste suchen, nicht um die Suche bar -

$searchq = $_POST['Search']; 

Sie wollen

$searchq = $_POST['searchbar']; 

In Bezug auf Ihre Frage - is it secure ??. Nein ist es nicht. Dies ist die perfekte Zeit, auf How can I prevent SQL injection in PHP?

Am Nötigste zu lesen, Sie mysqli_real_escape_string()

$searchq = mysqli_real_escape_string($conn, $_POST['searchbar']); 

verwenden könnten, aber ich würde noch einen Schritt weiter zu gehen, empfehlen und lernen, wie bereit zu verwenden Aussagen/Platzhalter, dh .

$stmt = $conn->prepare("SELECT * FROM users WHERE usernam LIKE ?"); 
$stmt->bind_param('s', "%".$_POST['searchbar']."%"); 
$stmt->execute(); 
+0

Ich tat dies '$ searchq = mysqli_real_escape_string ($ conn, $ _POST ['searchbar']); \t $ query = mysqli_query ($ conn, "SELECT * FROM Benutzer WHERE usernam LIKE '% $ searchq%'") oder sterben ("Konnte nicht suchen"); \t \t $ count = mysqli_num_rows ($ query); ' – mrpunani