Autor |
Beitrag |
chickenfigt1989
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 12:30
Hallo,
Ich habe eine Accountsystem Komponente die List mir die Tabellen aus meiner Db aus und gibt sie in ein Listview wieder.
Allerdings will ich jetzt in mein Programm einbauen das der User seine User id sieht.
Deswegen hab ich den Code bisschen umgewandelt und sieht so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, AccountSystem;
type TForm1 = class(TForm) ListView1: TListView; Button1: TButton; AccountSystemAdmin1: TAccountSystemAdmin; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure AccountSystemAdmin1UserListLoaded(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin AccountSystemAdmin1.LoadUserList;
end;
procedure TForm1.Edit2Change(Sender: TObject); begin AccountSystemAdmin1.Password := Edit1.Text; end;
procedure TForm1.Edit1Change(Sender: TObject); begin AccountSystemAdmin1.UserName := Edit2.Text; end;
procedure TForm1.AccountSystemAdmin1UserListLoaded(Sender: TObject); var iUser: Integer; Birthday: String; begin ListView1.Items.Clear; for iUser := 0 to AccountSystemAdmin1.Users.Count - 1 do begin with ListView1.Items.Add do begin Caption := IntToStr(AccountSystemAdmin1.Users[iUser].ID); end; end; end; |
Allerdings wenn ich nun meinen Usernamen und Passwort eingib dan sollte die id aufgelistet werden es wird aber im listview immer nur -1 ausgegeben.
Woran liegt das?
lg
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.10.10 12:41
Wie sollen wir dir denn dabei helfen, wenn du nicht sagst was du da für eine Komponente hast und was die machen soll?
Der Fehler wird wohl dort liegen, in dem geposteten Quelltext sehe ich nichts besonderes.
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 12:45
Die komponente Stellt über eine Php Datei eine Verbindung zu meiner Datenbank her.
Hier ist mal die PhP Datei:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370:
| <?php //error_reporting(0); header('content-type: text/plain');
/* Einstellungen ---------------------------------------------------------- */
define('SQLHOST', ''); define('SQLUSER', ''); define('SQLPASSWORD', ''); define('SQLDB', ''); define('SQLTABLE', ''); define('ADMINMAIL', ''); define('ADMINMAIL2', '');
/* Statements (ab hier nichts verändern!) --------------------------------- */
define('SQLLOGINUSER', 'SELECT * FROM %table% WHERE username="%username%" AND passw=md5("%password%")'); define('SQLGETUSERRECORD', 'SELECT * FROM %table% WHERE username="%username%"'); define('SQLSETUSERRECORD', 'UPDATE %table% SET username="%username%", birthday="%birthday%", email="%email%", stat="%stat%" WHERE id="%id%"'); define('SQLDELETEUSER', 'DELETE FROM %table% WHERE username="%username%"'); define('SQLADDUSER', 'INSERT INTO %table% SET username="%username%", passw=md5("%password%"), birthday="%birthday%", email="%email%", stat="2", id="%id%"'); define('SQLGETALLUSERS', 'SELECT * FROM %table%');
/* Datenbankverbindung herstellen ----------------------------------------- */
$conn = mysql_connect(SQLHOST, SQLUSER, SQLPASSWORD); if(!$conn) { die('verbinden mit der datenbank fehlgeschlagen!'); }
$db = mysql_select_db(SQLDB, $conn); if(!$db) { die('tabelle wurde nicht gefunden!'); }
/* POST Daten überprüfen -------------------------------------------------- */
if(isset($_POST['login_username'])) { $param_login_username = mysql_real_escape_string($_POST['login_username']); }
if(isset($_POST['login_password'])) { $param_login_password = mysql_real_escape_string($_POST['login_password']); }
if(isset($_POST['username'])) { $param_username = mysql_real_escape_string($_POST['username']); }
if(isset($_POST['password'])) { $param_password = mysql_real_escape_string($_POST['password']); }
if(isset($_POST['birthday'])) { $param_birthday = mysql_real_escape_string($_POST['birthday']); }
if(isset($_POST['email'])) { $param_email = mysql_real_escape_string($_POST['email']); }
if(isset($_POST['stat'])) { $param_stat = mysql_real_escape_string($_POST['stat']); }
if(isset($_POST['action'])) { $param_action = mysql_real_escape_string($_POST['action']); } else { die('"action" ist nicht definiert!'); }
/* Funktionen ------------------------------------------------------------- */
function getuserdbrecord($username) { $statement = str_replace('%table%', SQLTABLE, SQLGETUSERRECORD); $statement = str_replace('%username%', $username, $statement);
$sqldata = mysql_query($statement); if(mysql_num_rows($sqldata) != 0) { $user_record = mysql_fetch_assoc($sqldata); if(!$user_record) { return false; } else { return $user_record; } } else { return false; } }
function setuserdbrecord($id, $record) { $statement = str_replace('%table%', SQLTABLE, SQLSETUSERRECORD); $statement = str_replace('%username%', $record['username'], $statement); $statement = str_replace('%password%', $record['passw'], $statement); $statement = str_replace('%birthday%',$record['birthday'], $statement); $statement = str_replace('%email%', $record['email'], $statement); $statement = str_replace('%stat%', $record['stat'], $statement); $statement = str_replace('%id%', $id, $statement);
$result = mysql_query($statement); return $result; }
function userexists($username) { if(!getuserdbrecord($username)) { return false; } else { return true; } }
function deleteuser($username) { $statement = str_replace('%table%', SQLTABLE, SQLDELETEUSER); $statement = str_replace('%username%', $username, $statement);
$result = mysql_query($statement); if(!$result) { return false; } else { return true; } }
function changeuserstatus($username, $newstatus) { //newstatus = int //0 = demo //1 = aktiviert //2 = deaktiviert //4 = admin if(userexists($username)) { $user_rec = getuserdbrecord($username); $user_rec['stat'] = $newstatus; $result = setuserdbrecord($user_rec['id'], $user_rec); return $result; } else { return false; } }
function getuserstatus($username) { if(userexists($username)) { $user_rec = getuserdbrecord($username); $status = $user_rec['stat']; return $status; } }
function getuseremail($username) { if(userexists($username)) { $user_rec = getuserdbrecord($username); $email = $user_rec['email']; return $email; } }
function getuserbirthday($username) { if(userexists($username)) { $user_rec = getuserdbrecord($username); $birthday = $user_rec['birthday']; return $birthday; } }
function isuserexpired($username) { if(userexists($username)) { $user_rec = getuserdbrecord($username); if(($user_rec['stat'] == 0) and (time() >= ($user_rec['id'] + 259200))) { return true; } else { return false; } } else { return false; } }
function getuserid($username) { if(userexists($username)) { $user_rec = getuserdbrecord($username); $id = $user_rec['id']; return $id; } }
function adduser($username, $password, $birthday, $email) { $statement = str_replace('%table%', SQLTABLE, SQLADDUSER); $statement = str_replace('%username%', $username, $statement); $statement = str_replace('%password%', $password, $statement); $statement = str_replace('%birthday%', $birthday, $statement); $statement = str_replace('%email%', $email, $statement);
$date = time(); $statement = str_replace('%id%', $date, $statement);
$resp = mysql_query($statement); if(!$resp) { return false; } else { return true; } }
function listusers() { $statement = str_replace('%table%', SQLTABLE, SQLGETALLUSERS);
$users = mysql_query($statement); if(mysql_num_rows($users) != 0) { while($row = mysql_fetch_assoc($users)) { echo $row['username'] . "\r\n"; } } }
function login($username, $password) { $statement = str_replace('%table%', SQLTABLE, SQLLOGINUSER); $statement = str_replace('%username%', $username, $statement); $statement = str_replace('%password%', $password, $statement);
$result = mysql_query($statement); if(mysql_num_rows($result) == 0) { return false; } else { return true; } }
function loginasadmin($username, $password) { if(login($username, $password)) { $user_rec = getuserdbrecord($username); if($user_rec['stat'] == 4) { return true; } else { return false; } } else { return false; } }
function sendnewusernotification($username) { mail(ADMINMAIL, 'neuer benutzer', 'der user ' . $username . ' hat sich so eben registriert.'); mail(ADMINMAIL2, 'neuer benutzer', 'der user ' . $username . ' hat sich so eben registriert.'); }
/* Hauptteil -------------------------------------------------------------- */
//Debug... /*echo 'Action: ' . $param_action . "\r\n"; echo 'birthday: ' . $param_birthday . "\r\n"; echo 'email: ' . $param_email . "\r\n"; echo 'id: ' . $param_id . "\r\n"; echo 'login_password: ' . $param_login_password . "\r\n"; echo 'login_username: ' . $param_login_username . "\r\n"; echo 'password: ' . $param_password . "\r\n"; echo 'stat: ' . $param_stat . "\r\n"; echo 'username: ' . $param_username . "\r\n"*/;
if(($param_action == 'deleteuser') or ($param_action == 'edituser') or ($param_action == 'changeuserstatus') or ($param_action == 'listusers') or ($param_action == 'getuseremail') or ($param_action == 'isuserexpired') or ($param_action == 'getuserbirthday') or ($param_action == 'getuserid')) { if(!loginasadmin($param_login_username, $param_login_password)) { die('loginasadmin_fail'); } } else if($param_action == 'login') { if(!login($param_login_username, $param_login_password)) { die('login_fail'); } else { $user_rec = getuserdbrecord($param_login_username); echo $user_rec['stat']; if(isuserexpired($param_login_username)) { echo '=expired'; } else { echo 'true'; } } }
if($param_action == 'adduser') {
//neuen benutzer registrieren if(!userexists($param_username)) { if(adduser($param_username, $param_password, $param_birthday, $param_email)) { sendnewusernotification($param_username); echo 'true'; } else { echo 'false'; } } else { echo 'false'; }
} else if($param_action == 'userexists') {
//überprüfen ob benutzer bereits existiert if(userexists($param_username)) { echo 'true'; } else { echo 'false'; }
} else if($param_action == 'deleteuser') {
//benutzer löschen if(deleteuser($param_username)) { echo 'true'; } else { echo 'false'; }
} else if($param_action == 'edituser') {
//benutzer bearbeiten $user_rec = getuserdbrecord($param_username); $user_rec['birthday'] = $param_birthday; $user_rec['email'] = $param_email; if(!setuserdbrecord($user_rec['id'], $user_rec)) { echo 'false'; } else { echo 'true'; }
} else if($param_action == 'changeuserstatus') {
//benutzerstatus ändern if(!changeuserstatus($param_username, $param_stat)) { echo 'false'; } else { echo 'true'; }
} else if($param_action == 'listusers') {
//alle benutzer auflisten (es werden nur benutzernamen ausgegeben, zeile für zeile) listusers();
} else if($param_action == 'getuserstatus') {
//benutzer status auslesen echo getuserstatus($param_username);
} else if($param_action == 'getuseremail') {
//benutzer mail auslesen echo getuseremail($param_username);
} else if($param_action == 'getuserbirthday') {
//benutzer geburtsdatum auslesen echo getuserbirthday($param_username);
} else if($param_action == 'getuserid') {
//benutzer id auslesen echo getuserid($param_username);
} else if($param_action == 'isuserepxired') {
//ist benutzer abgelaufen? if(isuserexpired($param_username)) { echo 'true'; } else { echo 'false'; }
}
mysql_close($conn);
?> |
Zuletzt bearbeitet von chickenfigt1989 am So 10.10.10 12:52, insgesamt 2-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.10.10 12:47
Ja, na gut, aber wenn da die Daten erfolgreich ausgelesen werden, dann liegt das Problem in der Komponente und nicht auf Serverseite.
Hast du denn in der Komponente mal debuggt was da eigentlich ankommt?
Nebenbei:
Ich würde die Zugangsdaten löschen vor dem Posten. 
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 12:53
Also bei meinen Admin Client das auslesen funktioniert Prima nur hier wenn ich die Userid auslesen will, bekomm ich immer nur -1
Ne hab ich nicht.
lg
Ups dankeschön voll vergessen
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.10.10 12:55
Dann musst du da eben etwas anders gemacht haben. Vielleicht hast du etwas nicht initialisiert oder so.
Da musst du eben schauen was Schritt für Schritt passiert. 
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 13:00
Gibt es noch ne leichtere Methode via Php um Tabellen auszulesen?
Weil ich bräucht eig. nur das wenn man bei mir in MainMenu auf Profil klickt, das Userprofil aufgeht dort sind Zwei Labels. Ein Label mit Caption := UserId und bei den Zweiten Label sollte dann die Userid stehen.
Das ganze brauch ich wenn mir ein User eine Mail schreibt sollte er die Userid mit angeben damit ich ihn Identifizieren kann.
Mfg
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 14:52
Der Spast der meinte er kann lustig sein und meine datenbank löschen kann sich freuen das ich erstens alles geloggt habe und es eine fette anzeige gibt und zweitens ich ein backup hab
lg
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.10.10 15:03
Nun ja, ist natürlich nicht die feine englische Art. Aber wenn man seine Zugangsdaten auch öffentlich postet, dann ist man schon teilweise selber Schuld. Wenn du dein Auto unverschlossen mit steckendem Schlüssel stehen lässt, brauchst du dich auch nicht wundern, wen es weg ist. Also rege dich nicht so auf und buche es unter Erfahrungen ab.
Für diesen Beitrag haben gedankt: BenBE
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.10.10 15:07
Und zum speziellen Fall: Steck deine Logindaten einfach in eine externe Datei und include die nur. So mache ich das immer. Erstens brauche ich die Datei dann nur einmal zentral liegen haben, falls sich die Daten ändern und zweitens kann ich die anderen Dateien ruhig immer weitergeben.
chickenfigt1989 hat folgendes geschrieben : | Gibt es noch ne leichtere Methode via Php um Tabellen auszulesen? |
Das Problem ist ja wohl eher "dein" Delphi-Quelltext. Die PHP-Datei sieht doch relativ fertig aus.
Im Grunde reicht aber vermutlich eine einfache SQL-Abfrage. Das musst du halt schauen wie du es machen willst.
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 15:10
Ja trotzdem ich glaub ihr seit hier alt genug aber manche benehmen sich echt kindisch
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: So 10.10.10 18:32
chickenfigt1989 hat folgendes geschrieben : | Der Spast der meinte er kann lustig sein und meine datenbank löschen kann sich freuen das ich erstens alles geloggt habe und es eine fette anzeige gibt und zweitens ich ein backup hab
lg |
Ich hab ja eigentlich nur darauf gewartet.  Sowas passiert nun mal halt wenn man blindes Copy&Paste anwendet und sich jeglicher Intelligenz und Bildung verwehrt.
Luckie hat folgendes geschrieben : | Nun ja, ist natürlich nicht die feine englische Art. Aber wenn man seine Zugangsdaten auch öffentlich postet, dann ist man schon teilweise selber Schuld. Wenn du dein Auto unverschlossen mit steckendem Schlüssel stehen lässt, brauchst du dich auch nicht wundern, wen es weg ist. Also rege dich nicht so auf und buche es unter Erfahrungen ab. |
Jup, und um bei der Autometapher zu bleiben: Jeder Richter wird dir ne Teilschuld zusprechen und die Versicherung würde dir genau 0.0 €uro zahlen (würd ich mal schätzen).
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: BenBE
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 18:41
Ja und auch wen cih kein geld bekomme derjenige ders war dafr blechen spast
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: So 10.10.10 18:43
chickenfigt1989 hat folgendes geschrieben : | Ja und auch wen cih kein geld bekomme derjenige ders war dafr blechen spast |
Bitte sag mir, dass du, falls du einen zivilrechtlichen Prozess anstrebst, das Geld dann für einen Deutschkurs ausgeben wirst und wenn noch was übrig bleibt dann bitte gleich auch in nen Programmierkurs...
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: BenBE, Martok
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.10.10 18:48
Wie hoch beläuft sich denn dein Schaden? Und pass auf dass dich dein Kunde nicht verklagt. 
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: So 10.10.10 18:51
Für diesen Beitrag haben gedankt: BenBE, elundril
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 10.10.10 18:56
Ich glaube, die beiden dxxt und er, würden ein super Team abgeben! Beide haben irgendwas gemeinsam!
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.10.10 19:04
Du meinst wohl bei beiden fehlt an einer bestimmten Stelle etwas... 
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 10.10.10 19:11
Auch, aber beide sind ewig suchende
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
chickenfigt1989 
      
Beiträge: 444
Erhaltene Danke: 2
|
Verfasst: So 10.10.10 19:22
Der schaden beläuft sich auf rund 3560 Euro
Wieso sollten mihc meine kunden verklagen?
|
|
|