2010-12-17 2 views
2

Entschuldigung, das ist wahrscheinlich eine wirklich dumme Frage, aber ist es sicher, diesen Code auf der Seite auszuführen, die die Leute sehen werden, oder sollte ich das stattdessen in eine Funktion einfügen und sie aufrufen?Ist es sicher, diese Abfrage auf der Seite auszuführen, auf der sich die Personen befinden?

$stmt = $db->prep_stmt("select * from .... where userid = ? and username = ?"); 

/* Binding 2 parameters. */ 
$stmt->bind_param("is", $userid, $username); 

/* Binding 2 result. */ 
$stmt->bind_result($isbn, $title, $author, $coef, $bookid); 

/* Executing the statement */ 
$stmt->execute() or die ("Could not execute statement"); 

/* 
* Making PHP buffer the whole result, 
* not recommended if there is a blob or 
* text field as PHP eats loads of memory 
*/ 
$stmt->store_result(); 
while ($stmt->fetch()) { 
/* 
    * Here you can use the variables $isbn, $title, $author, $coef, $bookid, 
    * which contatin the data for 1 row. 
    */ 
    print "<tr>". 
    "<td>".$isbn."</td>". 
    "<td>".$title."</td>". 
    "<td>".$author."</td>". 
    "</tr><tr><td>"; 

} 

Antwort

5

Sie werden aus Sicherheitsgründen die gleichen sein. Es ist eine Frage des Software-Designs. Sie sollten jedoch eine bessere Fehlerbehandlung in Betracht ziehen (zumindest für die Produktion). Insbesondere ist es nicht wirklich notwendig, die Fehlerursache zu verlieren ("Anweisung konnte nicht ausgeführt werden"). Normalerweise möchten Sie eine allgemeine Fehlerseite ("Es tut uns leid, der Server hat Probleme! Versuchen Sie, auf die Homepage zu gehen.").

+0

sanieren. Nun, das ist eigentlich nicht mein Code hier. Ich habe es einfach von einer Tutorial-Seite für vorbereitete Anweisungen kopiert. Ich bin nur neugierig tho, wenn es in Ordnung ist, wenn ich diesen Code in meiner index.php hatte und die Leute, die die Seite verwenden, sind auf index.php – mcbeav

+0

, aber danke für die großartige Antwort, die ich die Hilfe schätze – mcbeav

1

mich korrigieren, wenn im falschen, aber Sie scheinen besorgt zu sein, dass die Menschen Ihren PHP-Code anzeigen, aber dass man es in einer anderen Datei setzen und tat

$dataAccessor = new MyDataAccessorObject(); 
$dataAccessor->checkUser($userId, $userName); 

sie sinnvoll etwas sehen wouldnt't, richtig?

Ob dieser Code eine Funktion weg ist oder nicht, spielt keine Rolle. Sogar auf PHPs, die Leute "sehen", bekommen sie den Code nicht zu sehen, nur das HTML, das gerendert wird. Zwischen den php-Tags ist das einzige, was bewirkt, was der Benutzer sehen kann, wenn er auf 'view source' klickt, das Zeug, das gechattet oder gedruckt wird oder was auch immer.

Versuchen Sie, das PHP hier zu sehen, ich trau dich! http://lirr42.mta.info/schedules.php (Dies ist nur ein zufälliges Beispiel, kein besonderes im Vergleich zu irgendetwas anderem)

Was Sie sich sorgen müssen über die Sicherheit ist die Eingabe und SQL-Injektion. Es scheint, dass Ihre Parametrisierung das handhabt. Ich würde mir entweder diesen Benutzernamen oder die Benutzer-ID aus einem Formular vorstellen, und Sie müssen sicherstellen, dass einige Idioten nicht einen Benutzernamen wie blah' OR 1=1 eingeben und betrügen. Ihre vorbereitete Anweisung und Parameterbindung sollte damit umgehen. Wenn Sie sich nicht sicher sind, können Sie mit mysql_real_escape

Verwandte Themen