PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [1.2] Anmelden.php führt buchungen zu oft aus



Lokutos
12.03.2009, 18:28
Fehlerbeschreibung:
Ich habe jetzt schon 2 drei mal in den buchungen verfolgen können,
das buchungen der werberprämie 2,3 oder ach 4 mal ausgeführt wurden.

hier die buchungen eines users:

10.03.2009 23:02 5.000,00 Werberprämie für User 131
10.03.2009 23:02 5.000,00 Werberprämie für User 131
10.03.2009 23:02 5.000,00 Werberprämie für User 131
10.03.2009 22:59 5.000,00 Werberprämie für User 131es werden je nach lust und laune manchmal 1 buchung manchmal 4 wies halt grad lust hat ausgeführt.

Anmelde.php

<?
// Variabel vordefinieren!
if (!isset($_POST['anmelden'])) $_POST['anmelden'] = "";
if (!isset($_POST['nickname'])) $_POST['nickname'] = "";
if (!isset($_POST['nachname'])) $_POST['nachname'] = "";
if (!isset($_POST['vorname'])) $_POST['vorname'] = "";
if (!isset($_POST['emailadresse'])) $_POST['emailadresse'] = "";
if (!isset($_POST['passwort_1'])) $_POST['passwort_1'] = "";
if (!isset($_POST['passwort_2'])) $_POST['passwort_2'] = "";
if (!isset($_POST['agb'])) $_POST['agb'] = "";
if (!isset($_POST['newsletter'])) $_POST['newsletter'] = "1";
if (!isset($_POST['paidmails'])) $_POST['paidmails'] = "1";
if (!isset($error)) $error = "";
if (!isset($anmeldeok)) $anmeldeok = "";
if (!isset($ak)) $ak = "";

if ($_POST['anmelden'] == "Jetzt anmelden!") {



$_POST['nachname'] = addslashes ($_POST['nachname']);
$_POST['vorname'] = addslashes ($_POST['vorname']);

//UID Bestimmen
$id =db_query ("SELECT count(uid) as idid FROM ".$db_prefix."_userdaten ");
$id2 = mysql_fetch_assoc($id);
$id3= $id2[idid]+1;

// Auf Eingabefehler prüfen
if(!$_POST['nachname'] || !$_POST['vorname'] || !$_POST['emailadresse'] || !$_POST['passwort_1'] || !$_POST['passwort_2'] || !$_POST['nickname']) $error .= 'Bitte fülle alle benötigten Felder aus!<br>';


if(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$",$_POST['emailadresse'])) $error .= 'Der Emailsyntax ist falsch!<br>';
if ($_POST['passwort_1'] != $_POST['passwort_2']) $error .= 'Passwörter stimmen nicht überein!<br>';
if (strlen($_POST['passwort_1']) < 6) $error .= 'Passwortlänge muss min. 8 Zeichen haben<br>';
if ($_POST['pin'] != $_SESSION['pin_anmeldung']) $error .= 'Sicherheitscode falsch!';
if ($_POST['agb'] != "ja") $error .= 'Du musst die AGBs bestädigen!<br>';
if ($id3 == $_SESSION['werber']) $error .= 'Du kannst Dich nicht selber werben<br>';



// User mit der Datenbank abgleichen
if (!$error) {
$_POST['nickname'] = mysql_real_escape_string(ucfirst($_POST['nickname']));
$nickname_check =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$_POST['nickname']."'");
$mail_check = db_query ("SELECT `emailadresse` FROM ".$db_prefix."_emaildaten WHERE emailadresse='".$_POST['emailadresse']."'");
$black_check= db_query ("SELECT * FROM ".$db_prefix."_userblacklist WHERE uid='".$_POST['uid']."' and zeit >='".time()."'");
$sperre = mysql_fetch_array($black_check);
if ($sperre['zeit'] != 99999999999) {
$sperrtext = 'Du bist für eine Neuanmeldung noch bis <b>'.date("d.m.Y - H:i:s",$sperre['zeit']).'</b> gesperrt!<br>';
} else {
$sperrtext = '<b><i>Du bist für diese Webseite komplett gesperrt!</i></b>';
}
if (mysql_num_rows($mail_check)) $error .= 'Diese Emailadresse ist schon im System!<br>';
if (mysql_num_rows($black_check)) $error = $sperrtext;
if (mysql_num_rows($nickname_check)) $error .='Der Nickname ist schon vergeben!<br>';
}

//Anmeldebonus
$req=mysql_query("SELECT werberpraemie, startguthaben FROM ".$db_prefix."_start_praemie");
while ($row = mysql_fetch_array($req)) {
$werberpraemie=$row['werberpraemie'];
$startguthaben=$row['startguthaben'];
}
kontobuchung ('+',$werberpraemie,$_SESSION['werber']);
$buchungs_id = create_code(14);
db_query("INSERT INTO ".$db_prefix."_buchungen (uid,buchungszeit,buchungs_id,buchungsmenge,verwen dungszweck) VALUES (".$_SESSION['werber'].",".time().",'".$buchungs_id."','".$werberpraemie ."','Werberprämie für User ".$id3."')");


// User eintragen
if (!$error) {
db_query("INSERT INTO ".$db_prefix."_kontodaten (uid,passwort,status,hinweis,kontostand) VALUES ('".$id3."','".md5($_POST['passwort_1'])."','0','','$startguthaben')");
db_query("INSERT INTO ".$db_prefix."_emaildaten (uid,emailadresse,freigabe_fuer) VALUES ('".$id3."','".$_POST['emailadresse']."','".$_POST['newsletter']."')");
db_query("INSERT INTO ".$db_prefix."_userdaten (uid,nickname,vorname,nachname,angemeldet_seit) VALUES ('".$id3."','".$_POST['nickname']."','".$_POST['vorname']."','".$_POST['nachname']."','".time()."')");
db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit) VALUES ('".$id3."','".$_SESSION['werber']."','0','".time()."')");

}

if ($error){
head("Anmeldefehler");
echo '<font color="#cc0000">'.$error.'</font>';
foot();
}
?>

<? if ($anmeldeok != "true") { ?>
<?head("$seitenname - Neuanmeldung");


?>

<center><b>Neuanmeldung</b></center>
<table width="100%" cellpadding="3" cellspacing="0" border="0">
<form action="" method="post">
<tr>
<td class="main"><b>Nickname:</b></td>
<td class="main"><input type="text" name="nickname" value="<?=$_POST['nickname'];?>"></td>
</tr>
<tr>
<td class="main"><b>Nachname:</b></td>
<td class="main"><input type="text" name="nachname" value="<?=$_POST['nachname'];?>"></td>
</tr>
<tr>
<td class="main"><b>Vorname:</b></td>
<td class="main"><input type="text" name="vorname" value="<?=$_POST['vorname'];?>"></td>
</tr>
<tr>
<td class="main"><b>Emailadresse:</b></td>
<td class="main"><input type="text" name="emailadresse" value="<?=$_POST['emailadresse'];?>"></td>
</tr>
<tr>
<td class="main">Werber:</td>
<td class="main"><? if($_SESSION['werber'] == 0) {echo '<b>keinen</b>';} else {echo $_SESSION['werber'];}?></td>
</tr>
<tr>
<td class="main"><b>Passwort:</b></td>
<td class="main"><input type="password" name="passwort_1"></td>
</tr>
<tr>
<td class="main"><b>Passwortbestätigung:</b></td>
<td class="main"><input type="password" name="passwort_2"></td>
</tr>
<tr>
<td class="main"><b>Newsletter:</b></td>
<td class="main"><select name="newsletter"><option value="1" <? if ($_POST['newsletter'] == "1") { echo 'selected';}?>>Ja</option><option value="0" <? if ($_POST['newsletter'] != "1") { echo 'selected';}?>>Nein</option></select></td>
</tr>
<tr>
<td class="main"><b>AGB`s gelesen und akzeptiert:</b></td>
<td class="main"><select name="agb"><option value="ja" <? if ($_POST['agb'] == "ja") { echo 'selected';}?>>Ja</option><option value="nein" <? if ($_POST['agb'] != "ja") { echo 'selected';}?>>Nein</option></select></td>
</tr>
<tr>
<td class="main"><b><img src="pin_image.php"></b></td>
<td class="main"><input type="text" name="pin"></td>
</tr>
<tr>
<td class="main" align="center" colspan="2">
Vor dem Anmelden lese bitte die <a href="?content=/intern/agbs">AGB`s</a> !<br><br>
<input type="submit" name="anmelden" value="Jetzt anmelden!">
</td>
</tr>
</form>
</table>
<?foot();?>
<?} else {?>
<?head("$seitenname - Anmeldung erfolgreich!");?>
Deine Anmeldung bei <?=$seitenname;?> war erfolgreich, Du bekommst jetzt eine Email mit Deinen Daten und einen Aktivierungslink.
Sobald Du deinen Account aktiviert hast kannst Du dich bei uns einloggen und diese Seite im vollen Umfang nutzen.<br>
<br>
Bitte beachte dass es auch etwas dauern kann bis die Aktivierungsmail bei Dir ankommt, dieses ist anhängig von Deinem Emailanbieter.<br>
<br>
Mit freundlichen Grüßen<br>
Joschi<br>

<?foot();?>
<? } ?>


MFG Lokutos

EarlofMidnight
12.03.2009, 18:35
§2.9 Verwendung fremden Eigentums (Code, Bilder,...)
Es ist ausdrücklich verboten Dinge, die nicht Eigentum der Person sind die sie veröffentlicht hat, preiszugeben bzw. zu veröffentlichen! Dies betrifft auch einzelne Teile fremden Eigentums, vor allem Teile oder Codefragmente aus kostenpflichtigen Scripten! Missachten dieser Regel führt zum sofortigen Ausschluss von Designerscripte.net und kann durch den Ersteller des Sachgegenstandes zu rechtlichen Folgen führen.
Das auffinden solcher Verletzungen der Regeln sollte auch von Usern sofort an einen Admin oder Moderator gemeldet werden. Designerscipte.net distanziert sich ausdrücklich von Copyrightverletzungen durch Mitglieder wegen Nichteinhalten der Forenregeln. Jedoch bemühen wir uns diese aus dem Forum nach auffinden sofort zu entfernen.

Lokutos
12.03.2009, 18:40
§2.9 Verwendung fremden Eigentums (Code, Bilder,...)
Es ist ausdrücklich verboten Dinge, die nicht Eigentum der Person sind die sie veröffentlicht hat, preiszugeben bzw. zu veröffentlichen! Dies betrifft auch einzelne Teile fremden Eigentums, vor allem Teile oder Codefragmente aus kostenpflichtigen Scripten! Missachten dieser Regel führt zum sofortigen Ausschluss von Designerscripte.net und kann durch den Ersteller des Sachgegenstandes zu rechtlichen Folgen führen.
Das auffinden solcher Verletzungen der Regeln sollte auch von Usern sofort an einen Admin oder Moderator gemeldet werden. Designerscipte.net distanziert sich ausdrücklich von Copyrightverletzungen durch Mitglieder wegen Nichteinhalten der Forenregeln. Jedoch bemühen wir uns diese aus dem Forum nach auffinden sofort zu entfernen.


Ich habe diese anmelden.php selber geschrieben darum bitte wieder einfügen


MFG Lokutos

eRaaaa
12.03.2009, 18:41
also ich konnte den code noch lesen :)

daher sag ich dir folgendes:

1. allgemeines: wieso hängt ihr immer eine while schleife um ein fetch array, wenns eh nur ein datensatz ist? :confused:

2. mach den werberbonus in den if block vom user eintragen, also nach if (!$error) {
....
}

sonst kann er halt tausend mal falsche angaben eingeben und landet immer wieder auf deine anmeldeseite und bekommt halt jedes mal den bonus !

EarlofMidnight
12.03.2009, 18:42
Wie es der Zufall so will heißen die Prämien bei dir genau so wie bei käuflichen Addons!

War keine Böse Absicht!

Lokutos
12.03.2009, 18:46
Wie es der Zufall so will heißen die Prämien bei dir genau so wie bei käuflichen Addons!

War keine Böse Absicht!

naja sind halt die einachsten sachen werberprämie und anmeldebonus
und gehört zum start und da vms_prämie schon belegt ist in meiner db gg
thx fürs wieder einfügen

@ eraaa warum in ner schleife :der: weis ich selber nich gg funzt aber also lass ichs lieber so gg

das mit dem verschieben werd ich mal ausprobieren womoglich hast du recht und es wahren vorher fehler bei der anmeldung und somit nicht eingetragen

THX

h-m
12.03.2009, 19:43
kleine info zu dem while: also wenn du aus versehen mehrere datensätze in der Tabelle vms_start_praemie drin hast, dann bekommen die beiden variablen bei verwendung der while-schleife halt die werte des letzten zurückgelieferten datensatzes zugewiesen.

hat jetzt aber nichts mit deinem problem zu tun.

mit folgendem code (ungetestet) bekommen die variablen dann die werte des ersten zurückgelieferten datensatzes zugewiesen statt die des letzten:


//Anmeldebonus
$req=mysql_query("SELECT werberpraemie, startguthaben FROM ".$db_prefix."_start_praemie");
if (mysql_num_rows($req)>0) {
$row = mysql_fetch_array($req));
$werberpraemie=$row['werberpraemie'];
$startguthaben=$row['startguthaben'];
}

bei mir ist die while-schleife auch drin .. keine probleme.

du solltest die Prämien nur gutschreiben, wenn (= if) KEIN (= !) fehler (= $error) aufgetreten ist ...=> if(!$error)... wie eRaaa schon sagte.

bei mir ist der ganze block mit einem if(!$error) umschlossen, in etwa so:


//Anmeldebonus
if(!$error){
$req=mysql_query("SELECT werberpraemie, startguthaben FROM ".$db_prefix."_start_praemie");
while ($row = mysql_fetch_array($req)) {
$werberpraemie=$row['werberpraemie'];
$startguthaben=$row['startguthaben'];
}
kontobuchung ('+',$werberpraemie,$_SESSION['werber']);
$buchungs_id = create_code(14);
db_query("INSERT INTO ".$db_prefix."_buchungen (uid,buchungszeit,buchungs_id,buchungsmenge,verwen dungszweck) VALUES (".$_SESSION['werber'].",".time().",'".$buchungs_id."','".$werberpraemie ."','Werberprämie für User ".$id3."')");
}

wenn man nicht weiss warum man welchen code schreibt: ich kann jedem nur das PHP-Handbuch im CHM-Format ans Herz legen. gibt es auch weitestgehend auf deutsch. PHP-MySQL-Tutorials gibts auch viele im Netz.

viel Erfolg :thumb: