Sunmexx: Daten werden zu früh automatisch gelöscht! :o(

Hallo zusammen, Erst mal Danke an alle die mir bis jetzt geholfen haben! Ich hoffe ihr könnt mir noch ein letztes mal helfen? Es geht um ein  Freeware Script für eine Mitgliederverwaltung. Es ist nicht von mir geschrieben, aber es waren eine Ganze menge Fehler darin. Die Mitglieder könne ihr Profil selbst bearbeiten, aber wenn sie ihr Profil Bearbeitet haben erhalten sie Folgende Meldungen:

1.)Ihr altes Profil wurde automatisch gelöscht !

2.) Schade, Ihre Eingaben sind nicht vollständig oder unkorrekt! Bitte gehen Sie zurück und füllen das Formular vollständig aus!

Obwohl die Daten  alle im Formular richtig eingetragen  sind! Du kannst es ja mal selbst ausprobieren unter, http://www.hey-was-geht-ab.de/partner/index.php ist nur eien Demo und Test HP! Lege dir ein fiktive Profil an und bearbeite es anschließend. Ich Postete hier mal die Quelltexte, ich weis das nervt euch aber ich weis nicht wie ich anders dahinter kommen soll wo der lösch Auftrag versteckt ist, und wo ich ihn  hin Schreiben muß das das Programm endlich läuft. SORRY !

Grüsse  Sun

admin-update1.php  <html> <meta name="generator" content="Namo WebEditor v5.0(Trial)"> <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" style="font-family:Verdana; font-size:14px; color:blue; background-color:rgb(255,255,204);"> <center> <p>Hier können Sie sich Ihr Inserat ändern.</p> </center> <form method="post" action="admin-update2.php"> <table style="font-family:Verdana; font-size:12px; color:blue; background-color:white;" align="center" border="0" cellpadding="0" cellspacing="0" width="386"> <tr> <td width="132" height="30"><p align="right">Ihre E-mail?</p> </td> <td width="238" height="30"><center> <p><input type='text' name='email' size="30" style="border-style:groove;"></p> </center></td> </tr> <tr> <td width="132" height="30"><p align="right">Ihre Chiffre Nr.?</p> </td> <td width="238" height="30"><center> <p><input type='text' name='pass' size="30" style="border-style:groove;"></p> </center></td> </tr> </table> <center> <p><input type=submit value=Login style="font-size:14px; color:blue; background-color:white; border-style:groove;"></p>

</form> </center></body></html>

admin-update2.php

<? echo "<LINK REL='STYLESHEET' HREF='sub.css' TYPE='TEXT/CSS'>";

// Hier keine Veränderungen vornehmen // Datenbankverbindung

include("config.php"); include("db_connect.php");

// Datenbank auslesen

$abfrage="SELECT anz_id,anz_datum,anz_name,anz_geschlecht,anz_ort,anz_plz,anz_alt,anz_sterne,anz_alter,anz_stern,anz_anspruch,anz_und,anz_geschlecht1,anz_land,anz_hobby,anz_vorliebe,anz_abneigung,anz_interesse,anz_oder,anz_haare,anz_augen,anz_figur,anz_groesse,anz_gewicht,anz_kinder,anz_raucher,anz_relegion,anz_email,anz_page,anz_pic,anz_rubrik,anz_text,anz_chiff FROM anzeigen WHERE anz_email='$email' and anz_pass='$pass'"; $ergebnis=mysql_query($abfrage);

$abfrage="DELETE FROM anzeigen WHERE anz_email='$email' and anz_pass='$pass'"; mysql_query($abfrage);mysql_query($abfrage);

// Ergebnisse ausgeben

echo "<html>"; echo "<head>"; echo "<title>Anzeigen</title>"; echo "<STYLE> a:link {text-decoration:none;color:blue} a:hover {text-decoration:none;color:red} a:active {text-decoration:none;color:darkblue} a:visited {text-decoration:none;color:black} body { scrollbar-face-color: #ffffcc; scrollbar-shadow-color: #ffffcc; scrollbar-highlight-color: #FDECCC; scrollbar-3dlight-color: #B9C8D2; scrollbar-darkshadow-color: #B9C8D2; scrollbar-track-color: #ffffcc; scrollbar-arrow-color: ##000080; } </STYLE>";

echo "</head>"; echo "<body bgcolor=#ffffcc text=#000000>";

while(list($anz_id,$anz_datum,$anz_name,$anz_geschlecht,$anz_ort,$anz_plz,$anz_alt,$anz_sterne,$anz_alter,$anz_stern,$anz_anspruch,$anz_und,$anz_geschlecht1,$anz_land,$anz_hobby,$anz_vorliebe,$anz_abneigung,$anz_interesse,$anz_oder,$anz_haare,$anz_augen,$anz_figur,$anz_groesse,$anz_gewicht,$anz_kinder,$anz_raucher,$anz_relegion,$anz_email,$anz_page,$anz_pic,$anz_rubrik,$anz_text,$anz_chiff)=mysql_fetch_row($ergebnis)) { if ($anz_datum){ ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $anz_datum, $dat); } echo"<form action='admin-update3-db-insert.php'>";

echo "<table bgcolor=#FFCC66 border=0 cellspacing=2 cellpadding=1 width=100%>"; echo "<td colspan=2 align=center bgcolor=gray><b><font color=#FFFFFF face=verdana size=+0>Detailanzeige</td>"; echo "<tr><td width=180>Mein Name:</td><td width=500><input type=text name='name' value='$anz_name'> Ich bin ein/e <input type=text name='geschlecht' value='$anz_geschlecht'></td></tr>"; echo "<tr><td width=180>Ich wohne in:</td><td width=500><input type=text name='plz' value='$anz_plz'> <input type=text name='ort' value='$anz_ort'></td></tr>"; echo "<tr><td width=180>Mein Alter:</td><td width=500><input type=text name='alter' value='$anz_alter'>, mein Sternzeichen:<input type=text name=stern'' value='$anz_stern'> </td></tr>"; echo "<tr><td width=180>Dein Alter sollte sein:</td><td width=500><input type=text name='alt' value='$anz_alt'> und evtl. mit dem Sternzeichen: <input type=text name='sterne' value='$anz_sterne'></td></tr>"; echo "<tr><td width=180>Es wäre nett wenn Du...</td><td width=500><input type=text name='anspruch' value='$anz_anspruch'> und <input type=text name='und' value='$anz_und'> und ein/e<input type=text name='geschlecht1' value='$anz_geschlecht1'> bist.</td></tr>"; echo "<tr><td width=180>Dieser Wohnort wäre super:</td><td width=500><input type=text name='land' value='$anz_land'></td></tr>"; echo "<tr><td width=180>Meine Hobbys:</td><td width=500><input type=text name='hobby' value='$anz_hobby'></td></tr>"; echo "<tr><td width=180>Meine Vorliebe ist für:</td><td width=500><input type=text name='vorliebe' value='$anz_vorliebe'></td></tr>"; echo "<tr><td width=180>Meine Abneigung ist gegen:</td><td width=500><input type=text name='abneigung' value='$anz_abneigung'></td></tr>"; echo "<tr><td width=180>Mein Interesse:</td><td width=500><input type=text name='interesse' value='$anz_interesse'> und/oder <input type=text name='oder' value='$anz_oder'></td></tr>"; echo "<tr valign='top'><td width=180>Meine Meine Optik:<br>Haarfarbe:<br>Augenfarbe:<br>Figur: </td><td width=500><br><input type=text name='haare' value='$anz_haare'><br><input type=text name='augen' value='$anz_augen'><br><input type=text name='figur' value='$anz_figur'></td></tr>"; echo "<tr><td width=180>Meine Größe:</td><td width=500><input type=text name=groesse'' value='$anz_groesse'> cm</td></tr>"; echo "<tr><td width=180>Mein Gewicht:</td><td width=500><input type=text name='gewicht' value='$anz_gewicht'> Kg</td></tr>"; echo "<tr><td width=180>Kinder:</td><td width=500><input type=text name='kinder' value='$anz_kinder'></td></tr>"; echo "<tr><td width=180>Raucher:</td><td width=500><input type=text name='raucher' value='$anz_raucher'></td></tr>"; echo "<tr><td width=180>Relegion:</td><td width=500><input type=text name='relegion' value='$anz_relegion'></td></tr>"; echo "<tr><td width=180>Meine Homepage:</td><td width=500><input type=text name='page' value='$anz_page'></b></td></tr>"; echo "<tr><td width=180>Meine Email:</td><td width=500><input type=text name='email' value='$anz_email'></b></td></tr>"; echo "<tr><td width=180>Ein Bild von mir...</td><td width=500><input type=text name='pic' value='$anz_pic'></td></tr>"; echo "<input type='hidden' name='pass' value='passwort'>"; echo "<tr><td width=180>Rubrik:</td><td width=500> <select name='rubrik'> <option value='' selected>Rubriken bitte neu auswählen</option> <option value=Er sucht Sie>Er sucht Sie</option> <option value=Sie sucht Ihn>Sie sucht Ihn</option> <option value=Er sucht.................u.sw.

</select> </font></td></tr><br><br>"; echo "<tr><td width=180>Anzeigendauer:</td><td width=500><select name='dauer'> <option value='60' selected>Anzeigendauer bitte neu auswählen.</option> <option value=7>7 Tage</option> <option value=10>10 Tage</option> <option value=21>21 Tage</option> <option value=30>30 Tage</option> <option value=60>60 Tage</option> <option value=90>90 Tage</option> </select></font><br><br></td></tr>"; echo "</table><br><br>"; } echo "<center>Ihr altes Inserat wurde automaisch gelöscht!<br><br><input type=submit value='Neue Änderung speichern'></center></form><br>"; echo "</body>"; echo "</html>";

// Datenbank schliessen

mysql_close( $link ); ?>

admin-update3-db-insert.php

<? // Hier keine Veränderungen vornehmen // Prüfen der Daten

include("config.php");

$datum=date("d.m.Y - H:i"); $anzdatum=date("Y.m.d"); $anzjahr=date("y")*365; $anzdauer=date("z"); $anzverfall=$anzjahr+$anzdauer+$dauer;

mt_srand((double)microtime()*1000000); $chiffre=mt_rand(); mt_srand((double)microtime()*1000000); $pass=mt_rand();

$anz="400"; $anz_text=strlen($text);

$fehler="<b><center>Schade, Ihre Eingaben sind nicht vollständig oder unkorrekt !<br><br> Bitte gehen Sie zurück und füllen das Formular vollständig aus !</center></b><br><br>";

$mailerror="<b><center>Schade, die eMail-Schreibweise ist nicht korrekt !</center></b><br><br>";

$button="<center><b><input type=button value=zurück onClick=history.back()></center></b><br><br>";

$fehler_text="<center><b>Sie haben <font color=red>$anz_text Zeichen </font>eingegeben. Die Datenbank speichert nur $anz Zeichen im Anzeigentext.<br> Bitte gehen Sie zurück und ändern Ihren Text.</b></center><br><br>";

// Prüfen der Eingaben auf Richtigkeit

if (!(ereg ("^.+@.+\..+$", $email))) { echo "$mailerror"; echo "$button"; exit; }

if ( $name == "" or $ort == "" or $rubrik == "" or $text == "") { echo "$fehler"; echo "$button"; exit; }

if (!( strlen ( $text ) <$anz )) { echo "$fehler_text"; echo "$button"; exit; }

include("db_connect.php");

// Prüfen auf doppelte Einträge

if ($double != "0") { $proofA="SELECT * FROM anzeigen WHERE anz_email='$email' "; $resA=mysql_query($proofA); $rowA=mysql_fetch_array($resA); $mailA=$rowA["anz_email"];

$proofB="SELECT * FROM anzeigen WHERE anz_page='$page' "; $resB=mysql_query($proofB); $rowB=mysql_fetch_array($resB); $pageB=$rowB["anz_page"];

}

// ENDE der Prüfung

$eintragen="INSERT INTO anzeigen (anz_datum,anz_verfall,anz_name,anz_geschlecht,anz_ort,anz_plz,anz_alt,anz_sterne,anz_alter,anz_stern,anz_anspruch,anz_und,anz_geschlecht1,anz_land,anz_hobby,anz_vorliebe,anz_abneigung,anz_interesse,anz_oder,anz_haare,anz_augen,anz_figur,anz_groesse,anz_gewicht,anz_kinder,anz_raucher,anz_relegion,anz_email,anz_page,anz_pass,anz_pic,anz_rubrik,anz_text,anz_chiff) values('$anzdatum','$anzverfall','$name','$geschlecht','$ort','$plz','$alt','$sterne','$alter','$stern','$anspruch','$und','$geschlecht1','$land','$hobby','$vorliebe','$abneigung','$interesse','$oder','$haare','$augen','$figur','$groesse','$gewicht','$kinder','$raucher','$relegion','$email','$page','$pass','$pic','$rubrik','$text','$chiffre')";

if (!$mailA && !$pageB) { mysql_query($eintragen,$link) or die ( "Konnte Datensatz nicht hinzufügen: ".mysql_error() );

echo "<CENTER>"; echo "<B>"; echo "<p>Liebe/r<font color=red> $name </font>Ihre Anzeige wurde geändert.<BR>"; echo "Ihre Daten werden an die $site_name ( $site_email ) weitergeleitet.<BR>"; echo "<P>Sie bekommen auch eine Bestätigung per eMail mit Ihren neuen Daten.<BR>"; echo "<p>Mit freundlichen Grüßen<BR>"; echo "<p>$site_name<BR><br>"; echo "<a href='$site_url' target=_parent>Zur Hauptseite</a>"; echo "</CENTER>";; } else { echo "<center><p><b>Diese eMail-Adresse oder Homepage ist schon vorhanden !<br><br>Kein Eintrag mehr möglich !</p></center><br><br>"; echo "<center><b><input type=button value=zurück onClick=history.back()></center></b><br><br>"; }

if (!$mailA && !$pageB) { include("admin-update4-mail.php"); }

mysql_close( $link )

?>

  1. Hallo Sunmexx!

    1.)Ihr altes Profil wurde automatisch gelöscht !
    2.) Schade, Ihre Eingaben sind nicht vollständig oder unkorrekt!
    Bitte gehen Sie zurück und füllen das Formular vollständig aus!

    Obwohl die Daten  alle im Formular richtig eingetragen  sind!
    Ich Postete hier mal die Quelltexte, ich weis das nervt euch aber ich weis nicht
    wie ich anders dahinter kommen soll wo der lösch Auftrag versteckt ist, [...]

    Ähm, such einfach im Quelltext nach den Meldungen, die ausgegeben werden (Findet man btw relativ schnell beim Überfliegen, die eine Meldung steckt in der Variablen $fehler ...).

    Und wenn Du nun beide Texte gefunden hat, dann schau Dir halt das Script an, unter welchen Umständen diese Texte ausgegeben werden.

    Wer Scripte online stellen will, sollte in der Lage sein einen Text zu suchen und zu schauen, welche Bedingungen erfüllt sein müssen, damit dieser Text ausgegeben wird, oder halt auch nicht ausgegeben wird.
    (naja, man muß das nicht unbedingt bei jedem Script einfach feststellen können, es gibt ja auch kompliziertere Scripte, aber die von Dir gepostetetn zeichnen sich imho weniger durch ihre Komplexität aus, als mehr durch ihre Unübersichtlichkeit.)

    Ach übrigens:
    Je mehr Quelltext Du postest, desto weniger wird er vermutlich gelesen, denn wenn ich erstmal hundert Zeilen durchlesen soll, dann antworte ich lieber mal gar nicht, weil ich keine Lust hab mir soviel Code anzuschauen. - Bis ich da das Problem gefunden habe, hab ich so ein Teil auch selbst geschrieben ...

    Also:
    Schau Dir den Code einfach mal systematisch durch, mach absichtlich falsche Eingaben und schau, was er dann ausspuckt ... usw.

    MfG
    Götz

    --
    Losung und Lehrtext für Montag, 23. Februar 2004
    Was recht ist, dem sollst du nachjagen, damit du leben kannst. (5.Mose 16,20)
    Seht zu, dass keiner dem andern Böses mit Bösem vergelte, sondern jagt allezeit dem Guten nach untereinander und gegen jedermann. (1.Thessalonicher 5,15)
    (http://www.losungen.de/heute.php3)
  2. Hollo ,
    Oder könnte der Fehler vielleicht hier stecken?
    Oder ist das nur die der lösch Auftrag für die Löschungen wenn die Mitglieder ihr Profil selbes Löschen!
    LG
    Sun

    <?

    include("config.php");
    include("db_connect.php");

    // loeschen von Anzeigen

    $del="DELETE FROM anzeigen WHERE anz_pass='$pass' AND anz_email='$email'";
    mysql_query($del, $link)
    or die ( "Konnte Datensatz nicht löschen: ".mysql_error() );
    echo "<center>Datensatz wurde geloescht !<br><input type=button value=zurück onClick=history.back()></center>";

    /*Datenbank schliessen*/

    mysql_close( $link );

    1. Hallo Sunmaxx!

      // loeschen von Anzeigen
      [...]

      Diese Zeilen waren beim letzten Posting nicht dabei, oder hab ich sie dort übersehen?

      Also, mit diesen Zeilen kann man wohl Einträge löschen, aber wann diese Zeilen ausgeführt werden kann man leider an den paar Zeilen nicht sehen (in welcher Datei stehen sie denn?).

      Stell die PHP-Dateien doch alle mal auf Deinen Webspace als syntaxgehighlightete phps-Dateien.
      Vielleicht würde man ja dann eher den Fehler finden ...

      MfG
      Götz

      --
      Losung und Lehrtext für Montag, 23. Februar 2004
      Was recht ist, dem sollst du nachjagen, damit du leben kannst. (5.Mose 16,20)
      Seht zu, dass keiner dem andern Böses mit Bösem vergelte, sondern jagt allezeit dem Guten nach untereinander und gegen jedermann. (1.Thessalonicher 5,15)
      (http://www.losungen.de/heute.php3)
      1. Moin moin,

        Diese Zeilen waren beim letzten Posting nicht dabei, oder hab ich sie dort übersehen?

        doch standen sie.

        also Sunmaxx...

        ich hab mir die Seite zwar angeschaut, aber mir ist es doch etwas arg aufwendig ein Profil anzulegen und es danach zu bearbeiten.

        Du hast in deiner admin-update1.php ein Formular mit den Feldern "email" und "pass".

        Gut, das Formular wird dann in der admin-update2.php ausgewertet und das zweite was du dort machst, ist das löschen des Datensatzes oder der Datensätze. Denn was ist, wenn man einen Platzhalter (%) in beide Felder der admin-update1.php eintippelt ? Dann würden der Theorie zufolge alle Anzeigen gelöscht werden.
        Da müsste eigentlich noch 'ne Überprüfung rein. So das nur ein Datensatz betroffen ist.

        Dann werden die aus der DB geholten Daten angezeigt. Fein. Diesem Formular solltest du noch die Methode sagen.
        Also aus "echo"<form action='admin-update3-db-insert.php'>";"
        ein "echo"<form method="post" action='admin-update3-db-insert.php'>";" machen

        Noch was in der admin-update2.php:
        "<option value=Er sucht.................u.sw."   <- warum wird diese Option nicht geschlossen ?

        Sodelööö, in admin-update3-db-insert.php wird ein wenig rumgeprüft und die neuen Daten in die DB geschoben.
        Dort kann ich auf den ersten Blick keine Fehler entdecken.

        Was Grundsätzliches:

        Wenn Daten von einem Formular per POST-Methode kommen, verwende bitte auch das Array $_POST['Formular_Feldname'] und nicht einfach nur $Formular_Feldname.

        siehe auch http://de2.php.net/variables.external

        Beispiel:
        in deiner admin-update2.php nimmst du die Daten _nicht_ per $mail und $pass entgegen, sondern per $_POST['mail'] und $_POST['pass'].

        Konkreter:
        Aus "$abfrage="DELETE FROM anzeigen WHERE anz_email='$email' and anz_pass='$pass'";"
        wird "$abfrage="DELETE FROM anzeigen WHERE anz_email=$_POST['email'] and anz_pass=$_POST['$pass']";"

        usw. usw.
        Auch in deiner admin-update3-db-insert.php solltest du das entsprechend anpassen.

        Noch was Grundsätzliches:
        Versuche deinen Code durch Einrückungen logisch aufzubauen.
        Beispiel:

        <table>
          <tr>
            <th>Ueberschrift</th>
          </tr>
          <tr>
            <td>Inhalt</td>
          </tr>
        </table>

        Diese Einrückungen (grausiges Wort!) erleichtern das Lesen von Quelltexten ungemein und bringen Übersichtlichkeit rein.