Naja, die Variable Passwort ist ja oben mit mysql_escape_string definiert, anstatt dem Inputtext, damit keiner Query-Befehle als Passwort schreiben kann und somit die Datenbanken verändern. Wie funktioniert mysql_format genau, und was würde es mir in dieser Situation bringen?? Im Moment geht es mir ja nur darum, dass die Werte beim Disconnect (also beim kick wegen des falschen Passworts) zurückgesetzt werden
Beiträge von Uppermost
-
-
Habe in meinem Login/Register System MySQL benutzt und das speichert auch alles korrekt. Wenn ich aber ein falsches Passwort eingebe, werden alle Werte zurückgesetzt, bis auf den Namen, das Passwort, das Geschlecht und das Alter. warum?
public PasswortAbfrage(playerid)
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(num_rows>0)
{
TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
pInfo[playerid][Logged] = 1;
pInfo[playerid][Level] = cache_get_field_content_int(0,"level",dbhandle);
pInfo[playerid][Geschlecht] = cache_get_field_content_int(0,"sex",dbhandle);
pInfo[playerid][Alter] = cache_get_field_content_int(0,"age",dbhandle);
pInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",dbhandle);
pInfo[playerid][Geld] = cache_get_field_content_int(0,"money",dbhandle);
pInfo[playerid][Fraktion] = cache_get_field_content_int(0,"faction",dbhandle);
pInfo[playerid][Rang] = cache_get_field_content_int(0,"rank",dbhandle);
SetPlayerScore(playerid,pInfo[playerid][Level]);
new altmoney = GetPlayerMoney(playerid);
GivePlayerMoney(playerid,-altmoney);
GivePlayerMoney(playerid,pInfo[playerid][Geld]);
SetSpawnInfo(playerid,0,29,-1969.4128,137.6455,27.6875,91.5533,0,0,0,0,0,0);
SpawnPlayer(playerid);
}
else
{
SetPVarInt(playerid,"badlogin",GetPVarInt(playerid,"badlogin")+1);
if(GetPVarInt(playerid,"badlogin")<3)
{
SendClientMessage(playerid,Rot,"Dieses Passwort war falsch!");
ShowPlayerDialog(playerid,DIALOG_LOGIN1,DIALOG_STYLE_PASSWORD,"Login","Dein Passwort:","OK","Abbrechen");
}
if(GetPVarInt(playerid,"badlogin") >=3)
{
SendClientMessage(playerid,Rot,"Du wurdest gekickt, weil du dein Passwort dreimal falsch eingegeben hast!");
Kick(playerid);
}
}
return 1;
}
Wird hier aufgerufen (OnDialogResponse)
switch(dialogid)
{
case DIALOG_LOGIN1:
{
if(response)
{
new query[256],passwort[40];
if(strlen(inputtext)>0)
{
mysql_escape_string(inputtext,passwort,dbhandle);
format(query,sizeof(query),"SELECT username,password,sex,age,adminlevel,level,money,faction,rank FROM user WHERE username='%s' AND password='%s'",pname,passwort);
mysql_function_query(dbhandle,query,true,"PasswortAbfrage","");
}
else
{
SendClientMessage(playerid,Gelb,"Gib ein Passwort ein!");
ShowPlayerDialog(playerid,DIALOG_LOGIN1,DIALOG_STYLE_PASSWORD,"Login","Dein Passwort:","OK","Abbrechen");
}
}
else
{
Kick(playerid);
}
}
Wenn ich auf dem Server bin und ein Kumpel dazujoint, vertauscht MySQL außerdem einige Werte.. Was los? Ich denke, das liegt daran, dass ich beim Disconnect alle Werte in der Database update. Wenn er gekickt wird, hat er natürlich keine Werte - und alles ist zurückgesetzt. Ich hatte die Idee, dies mit einer Variable zu lösen (wenn sie 1 ist, speichern, wenn 0 nicht), doch es sind ja unterschiedliche Callbacks... Wie dann? -
Router neugestartet, PC neugestartet.. Kein Erfolg
-
Mein Kumpel ist blau, wie genau kann ich das beheben? Vorhin war er übrigens grün, aber es ging trotzdem nicht. Und wie gesagt, gestern ging alles einwandfrei..
-
Ist bei mir auch so, der Unterschied ist nur, dass es gestern noch ging >.>
-
Ja, wie gesagt, seit gestern wurde nichts verändert (gestern ging es einwandfrei)
-
Ich und ein Kumpel haben gestern auf meinem Server gezockt, und heute geht das komischerweise nicht mehr. Bei ihm kommt nur noch retrieving info, allerdings ging es ja gestern noch. Ports sind freigegeben, ich habe im Hintergrund Skype und Xampp (für das Script) laufen. Übrigens benutzen wir Hamachi. Hatte ich gestern auch alles gleichzeitig. Weiß jemand noch weiter?
-
//EDIT : Gelöst.. War das falsche Object^^
-
Ich verstehe einige Dinge am BlueG MySQL Plugin noch nicht so ganz.. Wenn ich mit SELECT aus meiner Tabelle beispielsweise die Fraktion auslese, wie kann ich diese dann abfragen? Kurzes Beispiel: Ich habe einen Befehl, ocmd:getfraktion.
Jetzt definiere ich den query, formatiere ihn so dass er mir die Fraktion ausliest und wenn ich jetzt mysql_function_query benutze, muss ich einen Callback aufrufen, der die Daten weiterverarbeitet. Kann ich denn nicht einfach das Ergebnis im Befehl returnen bzw. wenn es keines gibt, false returnen? Zum Beispiel in der Variable x, wenn x 0 ist, soll eine Nachricht mit "Fraktion 0" kommen, wenn 1 ist Nachricht mit 1[...] Denn irgendwie ist das doch etwas umständlich, einen Callback zu benutzen, oder? Wäre nett ,wenn mir das jemand so ein Bisschen erklären könnte. -
//EDIT Lag am Timer- gefixxt
-
Genau das hatte ich gesucht (die Seite) Danke!
-
Wie kann ich das Gemappte aus MTA in mein Script einbringen? Ich weiß nur noch, dass man mit einer Mapdatei aus MTA irgendwas in PAWN Code umwandeln muss, aber ich frag lieber nach.
-
Genau sowas habe ich gesucht, praktisch dass sie sich immer wieder erhöht. Danke!
-
Ich möchte gerne in der Passwortabfrage (Login) zählen, wie oft der Benutzer versucht, sich einzuloggen. Wenn er es 3 mal versucht hat und es immernoch falsch ist, soll er gekickt werden. Wie mache ich so etwas? Gibt es eine Funktion CountInputs oder so? (Ich könnte 3 Variablen auf 1 setzen und ihn dann kicken, das ist aber ziemlich umständlich, daher will ich wissen ob es ne andere Möglichkeit gibt)
-
Danke. Hat alles geklappt
-
Funktioniert zwar so, aber ist es nicht etwas unsicher, direkt den root-user anzusprechen?
-
Ist auch die Datenbak Vorhanden ?
Ist Dein MySQL Server auch Gestartet ?
Probier mal : "localhost" statt "127.0.0.1"
Datenbank ist erstellt
MySQL Server ist gestartet (xampp)
Wenn ich bei den defines statt der IP localhost eingebe, kriege ich diesen Error: -
Ist das nicht etwas unsicher?
-
Jetzt kriege ich
obne ist jetzt folgendes definiert:#define db_host "127.0.0.1"
#define db_user "samp"
#define db_password ""
#define db_db "samp"
Pass ist keins drin in phpmyadmin und der user samp hat eigentlich volle rechte. komischerweise steht in der log nur ein leerer username -
Ja, dieses heißt "test". Ist ja oben definiert, trotzdem keine Rechte laut log