php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2008, 21:23  
Neuer Benutzer
 
Registriert seit: 27.12.2008
Beiträge: 6
skietz befindet sich auf einem aufstrebenden Ast
Standard Löschversuch aus Datenbank

Halli Hallo, bin neu hier

also ich habe auch ganz brav die Forensuche benutzt bin sogar fündig geworden! Aber Ihr wisst ja wie das ist, man verbringt stunden an einem Fehler und übersieht ihn... was ich möchte ist ganz einfach:
Es sollen via "id" datensätze aus der MYSQL datenbank gelöscht werden! Alle steht in eine Datei ich Poste den Text mal hier vllt findet von euch jemand den Fehler ich bin fertig mit den Nerven... Vielen dank im vorraus
PHP-Code:
<?php 
session_start
();
require_once(
'login_config.php');
require_once(
'login_include.php');
if(!isset(
$_SESSION['user'], $_SESSION['pw']) )
{ die(
"Du hast keinen Zugriff auf diese Datei"); }
if(
$_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])
{ die(
"Du hast keinen Zugriff auf diese Datei"); }
if(!
login_right($_SESSION['user'], $_SESSION['pw']))
{ die(
"Du hast keinen Zugriff auf diese Datei"); }

  
$abfrage "SELECT * FROM login_gruss ORDER BY id";
  
$ergebnis mysql_query($abfrage);
  while(
$row mysql_fetch_object($ergebnis))
    {
    echo 
"<table border=0 cellpadding=0 width=100% id=table1>
<tr>
<td><table border=0 cellpadding=0 width=100% id=table2>
<tr>
<td><table border=0 cellpadding=0 width=100% id=table3>
<tr>
<td><font face=Verdana size=2>Zeit</font></td><td><font face=Verdana size=2>$row->datum</font></td>
<td><a href=gruss_admin.php?id=$row->id>loeschen</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><table border=0 cellpadding=0 width=100% bordercolor=#C0C0C0 bordercolorlight=#C0C0C0 bordercolordark=#660066 id=table4><tr><tr>
</tr>
<td width=127><font face=Verdana><b>$row->nickname</b>($row->galter)</font></td>
<td><font face=Verdana><b>$row->gruss</b></font></td></tr></table></td></tr></table></td></tr></table><hr>"
;
    }
$id $HTTP_GET_VARS["id"];
$loeschen "DELETE FROM login_gruss WHERE id = '$id'";
$loesch mysql_query($loeschen);
  
?>
skietz ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.12.2008, 21:27  
Dominik
Gast
 
Beiträge: n/a
Standard

echo $id mal gemacht?

sicher ist das aber nicht | mysql angriffe

Geändert von Dominik (27.12.2008 um 21:31 Uhr).
 
Alt 27.12.2008, 21:30  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

PHP-Code:
// mysql_connect/mysql_select_db steht vermutlich
// in einer der beiden eingebundenen Dateien
$mysql mysql_connect('...''...''...') or die(mysql_error());
mysql_select_db('...'$mysql) or die(mysql_error());

$abfrage "SELECT * FROM login_gruss ORDER BY id";
echo 
'<pre>Debug: 'htmlspecialchars($abfrage), '</pre>';
...

// $HTTP_GET_VARS ist veraltet und wird nur mit register_long_arrays=On noch von PHP gesetzt
if ( isset($_GET['id'] ) ) {
  
// keine Parameter ohne entsprechende Behandlung in die Abfrage einfließen lassen
  
$id mysql_real_escape_string($_GET['id']);
  
$loeschen "DELETE FROM login_gruss WHERE id = '$id'";
  echo 
'<pre>Debug: 'htmlspecialchars($loeschen), '</pre>';
  
mysql_query($loeschen) or die(mysql_error());

David ist offline  
Alt 27.12.2008, 21:41  
Dominik
Gast
 
Beiträge: n/a
Standard

wozu das htmlspecialchars bei den abfragen? wenn man keinen Schadcode in die Datenbank lässt

ich mein was ist üblicher beim Abfragen die sicherungen vornehmen oder beim einfügen in die db
beides mal halte ich es ein bischen für übertrieben oder?

mfg
 
Alt 27.12.2008, 21:45  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Dominik Beitrag anzeigen
wozu das htmlspecialchars bei den abfragen? wenn man keinen Schadcode in die Datenbank lässt

ich mein was ist üblicher beim Abfragen die sicherungen vornehmen oder beim einfügen in die db
beides mal halte ich es ein bischen für übertrieben oder?

mfg
willst du grün und blau geschlagen werden, oder was soll das?

@dominic: ein mysql_real_escape_string auf int? warum? lieber richtig validieren.
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 27.12.2008, 21:56  
Neuer Benutzer
 
Registriert seit: 27.12.2008
Beiträge: 6
skietz befindet sich auf einem aufstrebenden Ast
Standard

Danke David, deine Antwort hat weitergeholfen, das löschen funktioniert nun, leider muss ich aber 2 mal draufklicken ?!? Komisch also einmal klicken würde mir genügen, ist das machbar?
skietz ist offline  
Alt 27.12.2008, 21:57  
Dominik
Gast
 
Beiträge: n/a
Standard

hö nein ich wollte eigentlich fragen ob ihr den den Schadcode in die DB schreibt und nur beim Abfragen sichert

oder ob ich die eingaben sicher macht so das kein schadcode in die db kommt und dafür beim abfragen nicht mehr sichert
 
Alt 27.12.2008, 21:58  
Dominik
Gast
 
Beiträge: n/a
Standard

@skietz bei einmal klicken löscht es schon

mach mal eine header location hin

mfg
 
Alt 27.12.2008, 22:08  
Neuer Benutzer
 
Registriert seit: 27.12.2008
Beiträge: 6
skietz befindet sich auf einem aufstrebenden Ast
Standard

es ist schon spät sitze schon seid heute morgen 9 uhr davor :P... Wie bekomm ich das denn hin, das ich auf löschen klicke und der datensatz sofort weh ist? Geht doch bestimmt irgendwie... Ich bedanke mich für eure rasche hilfe, schade nur das ich wohl nie genug weiss um euch mal Helfen zu könne
skietz ist offline  
Alt 27.12.2008, 22:32  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Dominik Beitrag anzeigen
wozu das htmlspecialchars bei den abfragen? wenn man keinen Schadcode in die Datenbank lässt

ich mein was ist üblicher beim Abfragen die sicherungen vornehmen oder beim einfügen in die db
beides mal halte ich es ein bischen für übertrieben oder?

mfg
Beim Schreiben in die Datenbank sichert man die Parameter gegen Code ab, die der SQL Abfrage "schaden" kann.
Bei der Ausgabe als HTML sichert man die Parameter gegen Code ab, der dem HTML "schaden" kann.
Das ist nicht deckungsgleich.
Zum Beispiel stört die SQL Abfrage ein < innerhalb einer Zeichenkette nicht. Die HTML Ausgabe allerdings schon.
Andersherum ist in HTML ein ' an den meisten Stellen völlig harmlos, in einer SQL Abfrage muss es maskiert werden.
PHP-Code:
$raw "xyz ' <> 123";

$x mysql_real_escape_string($raw$mysql);
// $x == xyz \' <> 123

$x htmlspecialchars($raw);
// $x == xyz ' &lt;&gt; 123 

Natürlich kannst Du die Eingabeparameter auch schon vor dem Eintragen in die Datenbank für die HTML Ausgabe sicher machen
PHP-Code:
$x mysql_real_escape_stringhtmlentities($raw), $mysql ); 
Aber dann hast Du "html-only" Code in der Datenbank. Wenn das htmlspecialchars/htmlentities ein (unglaubliches) Performance-Problem bei Dir darstellt, kannst Du das gerne tun. Ansonsten bringt das keine Vorteile.

Geändert von David (27.12.2008 um 22:35 Uhr).
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2 Tabellen aus unterschiedlichen Datenbank synchron halten. stefanjann Datenbanken 0 29.10.2008 15:47
Kann nicht zur Datenbank verbinden kate018 Datenbanken 5 08.10.2008 00:32
Direkten Zugriff auf Datenbank verhindern heyho PHP Tipps 2008 7 07.02.2008 11:41
Wann Datenbank öffnen/schließen tayke PHP Tipps 2006 10 24.05.2006 17:29
Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
Eintrag in Datenbank mittels Formular? Datenbanken 5 16.12.2004 17:36
[Erledigt] MySQL findet Datenbank nicht Datenbanken 10 21.10.2004 09:14


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum