Eintragen klappt nur löschen funzt nicht. Bitte um Hilfe!

Begonnen von lit-web, 06. Januar 2008, 13:50:12

Vorheriges Thema - Nächstes Thema

lit-web

Hallo @ all.
Also ich bin grad dabei in einer Seite ein kleinen Newsletter zu schreiben.
So das eintragen in die DB klappt auch super wie es soll. Nur wenn ich eine Adresse wieder löschen will geht das überhaupt nicht.
Hier mal der Code zur verdeutlichung!
 


   Zurück\";
}
if($_POST[\'wahl\']==0 && $_POST[\'email\']!=\"\")
{
   mysql_query(\"Delete From $tab_nl where id=\'\".$_POST[\'id\'].\"\'\");
}
}
require(\'function.inc.php\');
//Newsletter beendet
?>
 

 
\" method=\"post\" name=\"formular\">
 
eintragen
 
austragen
 
E-Mail: 
 
 
 

 
 
Vilen Dank für eure Hilfe. MFG der Litter

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


k00ni

Lass dir mal das SQL-Query ausgeben. Ich glaube nämlich, dass er vielleicht garnicht in die if-Abfrage reinkommt.
 
Grüße

lit-web

Wie ausgeben lassen? So wie ich mir ganz normal Datensätze ausgeben lass?

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


k00ni

Lass dir mal anzeigen, was hier drin steht:
 

mysql_query(\"Delete From $tab_nl where id=\'\".$_POST[\'id\'].\"\'\");

 
 
Also schreib das als String in der Form:
 

$query = \"Delete From $tab_nl where id=\'\".$_POST[\'id\'].\"\'\";
mysql_query ($query);

 
 
Und gib dann den String aus.
 

echo $query;

 
 
Grüße

lit-web

Da gibt er mir das hier aus. Also es steht nichts in der ID drin
Delete From nl where id=\'\'

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


k00ni

Laut deinem Formular übergibst du nirgends eine ID per POST.

lit-web

Hmm nun verzwiefel ich. Denn den Eintrag macht es ja auch richtig nur das löschen ebend nicht. Muss ich mir die Datensätze erst ausgeben lassen bevor ich sie löschen kann?

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


k00ni

Nein, du hast mich da falsch verstanden. Ich meinte, du sollst prüfen, ob du eine ID sauber übergibst und dann, ob du in die if-Anweisung (wo du den Datensatz löschen willst) überhaupt reinkommst. (ein einfaches echo in der if-Anweisung hilft beim Erkennen, ob die ausgeführt wird). Wenn du dort reinkommst und es immer noch nicht geht, dann lass dir das SQL-Query ausgeben. Wenn das wieder keine ID enthält, dann musst du schauen, ob du eine übergibst und diese auch eine Zahl ist und kein Mischmasch aus Zahlen und Sonderzeichen oder sowas.
Jetzt besser?

k00ni


lit-web

Hallo k00ni tut mir leid konnte noch nicht antworten. Nein es läuft nicht,ich weis nicht warum ich bekomme es einfach nicht hin und finde den Fehler nicht.

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


dec

Mach mal aus $_POST[\'id\'] ein $_POST[\'email\']. Dann geht es.
Aber aufgepasst: So kann jeder beliebige E-Mailadressen löschen, da keine Identifikationsprüfung (z. B. austragen über E-Mail zuerst nachfragen) stattfindet.

spass ist, was ihr draus macht


lit-web

Ich habe das Script noch ma geändert zumindest übersichtlicher gemacht doch es funktioniert der Löschvorgang leider immer noch nicht. Das Formular poste ich auch noch mal mit.
 


      Zurück\";
   }   
   else
   {
      if($_POST[\'wahl\']==1)
      {
         mysql_query(\"Insert Into $tab_nl
                  (email)
            VALUES   (\'$email\')
                  \")or die (mysql_error());
         header(\"Location: http://localhost/my-page/index.php\");
         mysql_close();
      }
   }
}
}
//$query = \"Delete From $tab_nl where id=\'\".$_POST[\'id\'].\"\'\";
//mysql_query ($query);
//echo $query;
//require(\'function.inc.php\');
//Newsletter beendet
?>
 
 
\" method=\"post\" name=\"formular\">
 
eintragen
 
austragen
 
E-Mail: 
 
 
 

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


1. Du versuchst, einen Datensatz über eine ID zu identifizieren, übergibst die ID jedoch nirgends.

mysql_query(\"Delete From $tab_nl where id=\'\".$_POST[\'id\'].\"\'\");

 
 
2. Du konvertierst wild Strings zu Integern. Das funktioniert meistens, aber nicht immer.


if($_POST[\'wahl\']==0)
if($_POST[\'wahl\']==\"\" && $_POST[\'email\']==\"\")
if($_POST[\'wahl\']==1)

 
 
3. Du übernimmst Daten von einer nicht-vertrauenswürdigen Quelle in ein Subsystem (die Datenbank). Ein Angreifer kann beliebigen Code in der Datenbank ausführen.


$wahl    =    $_POST[\'wahl\'];
$email    =    $_POST[\'email\'];

 
 
4. Du übernimmst Daten aus einer nicht-vertrauenswürdigen Quelle und machst dir diesen Code zu eigen. Ein Angreifer kann dies für XSS verwenden.

  
\" method=\"post\" name=\"formular\">

 
 
5. Du prüfst nicht, ob überhaupt (vollständige) Daten übergeben wurden. Das funktioniert meistens, aber nicht immer.


$wahl    =    $_POST[\'wahl\'];
$email    =    $_POST[\'email\'];

all your base are belong to us / Discord