DB Ausgabe = Fehlermeldung beheben

05/27/2015 23:34 #AnymRolex*#1
Hey Com,

Wollte Fragen wie man z.B sowas beheben/ändern könnte. Ich habe ein Programm indem man ein Buchstabe eingibt und alle Namen angezeigt werden mit den Anfangsbuchstaben der eingegeben wurde in ein neues .php Dokument. (Es geschieht per Mehtode POST in ein HTML-Dokument)

Nun wenn ich z.B direkt aufs Dokument gehe entsteht eine Fehlermeldung wie:

Notice: Undefined index: suche in C:\xampplinux\htdocs\zzzzzzzzzzzzz\index.php on line 6

Natürlich habe ich Sie definiert indem man sie im Input Bereich eingibt auf meinem HTML-Dokument. Jedoch würde ich gern wissen wie man sowas auch beheben könnte. Ist auch sehr wichtig gegen Angreifer sonst erhalten Sie ja Informationen.

Display_Erros könnte ich auch auf OFF stellen , nur ist mir eine Behebung lieber.

Hier sind die Codes:
HTML:

PHP:
05/27/2015 23:37 Analysis'#2
Wenn es dir um sicher geht, dann verwende bitte wenigstens real_escape_string und mysqli wird in der Regel auch objektorientierend verwendet.
05/28/2015 00:01 #AnymRolex*#3
Das ist mir bekannt, da ich ein neueinsteiger sind meine Kenntnisse mit OOP nicht ausreichend sind wollte ich wenigstens hier mal dafür nach einer Lösung finden. Und meine Frage lautete glaub ich anders... trotzdem Danke
05/28/2015 00:01 Mikesch01#4
Du solltest abfragen, ob ein Post-Action gesendet wurde:

PHP Code:
if(isset($_POST['suche'])) {
/* dein Inhalt */

So würde das bei dir ausschauen:
PHP Code:
 <?php
$con 
mysqli_connect("""root");
mysqli_select_db($con"dbname");

if(isset(
$_POST['suche'])) {
$sql "SELECT name, vorname, password FROM personen ";
$sql .= " where name like '" $_POST["suche"] . "%'";

$res mysqli_query($con$sql);

$num mysqli_num_rows($res);
if(
$num==0) echo "Keine Datensätze gefunden";


while (
$dt mysqli_fetch_assoc($res))
{
echo 
"<table border='1'>";
echo 
"<tr><td>Name</td> <td>Vorname</td>";
echo 
"<td>Password</td></tr>";
echo 
"<tr>";
echo 
"<td>" $dt["name"] . "</td>";
echo 
"<td>" $dt["vorname"] . "</td>";
echo 
"<td>" $dt["password"] . "</td>";
echo 
"</tr>";
}
echo 
"</table>";
}

mysqli_close($con);
?>
Was deine Script-Sicherheit angeht, könntest du dir wirklich PDO anschauen oder mysqli_real_escape_string verwenden um deine Daten zu entschärfen.
05/28/2015 00:15 AllCowsAreBurgers#5
Vergiss den escape mist jetz sofort und steig auf pdo um und/oder verwende prepared statements und benutze bindparam/value. Einmal den escape vergessen und schon is ne lücke offen. Ich hab sogar schon mal irgendwo gelesen, dass man sogar escapte strings umgehen kann. Also aufauf zu pdo ;)
05/28/2015 00:21 #AnymRolex*#6
Hammer Danke für den Tipp!
05/28/2015 00:36 OfficialiSEVEN#7
Quote:
Originally Posted by AllCowsAreBurgers View Post
Ich hab sogar schon mal irgendwo gelesen, dass man sogar escapte strings umgehen kann. Also aufauf zu pdo ;)

Also davon würde ich gerne mal einen Artikel lesen. So recht glaube ich dir net.
05/28/2015 11:38 IchVerabschiedeMich#8
Quote:
Originally Posted by FrickXHD View Post
Also davon würde ich gerne mal einen Artikel lesen. So recht glaube ich dir net.
Hier wird das sehr gut erläutert, zwar wird dabei nicht direkt das Escaping umgangen, aber eine Injection ist es trotzdem.

[Only registered and activated users can see links. Click Here To Register...]