Soll ich dir gerade mal per Teamspeak & Teamviewer helfen ?
MySQL R38 - Simples Anmeldung´s System
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
So, MrPawn: hat mir gerade einen riesigen gefallen getahen, wusste wenig doch er hat mir alles genau erklärt und jetzt finde ich mich auch schon viel besser durch.
Und noch am Rande, das Tutorial ist mMn. sehr gut gelungen konnte alles verstehen außer ein paar Kleinigkeiten.
Hast du gut gehmacht. -
Vielen Dank - Ich habe mich dieses mal bemüht ein gutes Tutorial auf die Beine zustellen
-
if(mysql_errno() < 1)print("MySQL: Die Verbindung wurde erfolgreich hergestellt."),mysql_log(LOG_ALL); else print("MySQL: Die Verbindung zur MySQL Datenbank konnte nicht hergestellt werden | Der Server wird nun heruntergefahren."), SendRconCommand("exit");
Die mysql_errno-Abfrage ist so nicht ganz korrekt. mysql_errno() returnt 0, wenn kein Fehler vorhanden ist, du überprüfst hier jedoch nur ob die Error-ID kleiner als 1 ist. mysql_errno() kann auch -1 (ungültige Verbindung) returnen.
Über den Coding-Stil kann man sich ja streiten, aber ich glaub für Anfänger ist es wesentlich einfacher, strukturierten Code zu lesen (anstelle von Code, das einfach in eine Zeile geklatscht ist).
Also so sollte es die Code-Zeile meiner Meinung nach aussehen:
mysql_log(LOG_ALL);
if(mysql_errno() == 0)
{
print("MySQL: Die Verbindung wurde erfolgreich hergestellt.");
}
else
{
print("MySQL: Die Verbindung zur MySQL Datenbank konnte nicht hergestellt werden | Der Server wird nun heruntergefahren.");
SendRconCommand("exit");
}Ansonsten könntest du noch näher auf den 2. Parameter von mysql_log() eingehen (der überhaupt nicht auf der Wiki-Seite erwähnt wird, werde das sofort korrigieren). Hier die Faustregel, wann man welchen Log-Typ benutzen soll:
- Text-Logging ('LOG_TYPE_TEXT'): wenn man Debug-Nachrichten loggt oder auf seinem Home-Server loggt
- HTML-Logging ('LOG_TYPE_HTML'): wenn man nur Errors und Warnings loggt und auf dem Hauptserver loggt
Text-Logging ist in Kombination mit Debug-Nachrichten sehr langsam und kann wirklich große Verzögerungen auslösen. Jedoch ist das Text-Logging die zuverlässigste Logging-Methode, um Crashes oder Bugs im Plugin ausfindig zu machen.
HTML-Logging ist entsprechend die schnellste Logging-Methode (soweit ichs im Kopf hab ist es 900x schneller als das Text-Logging), jedoch loggt es nicht alles, wenn das Plugin abstürzt. Die HTML-Datei verträgt auch nicht allzu viele Log-Nachrichten, deshalb sollte man nicht Debug-Nachrichten loggen, wenn man diesen Logging-Typ benutzen will.Ich finde es gut das du solch ein Tutorial machst zwar ist es noch ausbaufähig.
Jedoch mach ich noch paar Anmerkungen/Informationen:
- Manche haben das Problem mit gewissen .dll`s (msvcp110.dll, msvcr110.dll etc...), diese muss kann man downloaden und in den Samp-Server-Ordner verschieben oder ganz einfach microsoft visual c++ redistributable updaten.
- Ebenso kannst du noch ein Beispiel hinzunehmen wie man einen String ausließt das wissen auch nicht die meisten.
- cache_get_data(num_rows, num_fields); kann man nutzen jedoch gibt es schon lange cache_get_field_count(); was um einiges effizenter ist.#
- Nutze mysql_pquery anstelle von mysql_tquery da dieses um einiges schneller ist.
- Zusätzlich kannst du bei mysql_connect die Anzahl der maximalen Verbindungen als Threads einstellen.
NIE irgendwelche losen .dll's runterladen und einfach in nen Ordner reinklatschen!!! Falls ihr mit dem Plugin irgendwelche Errors bekommt, dass irgendne .dll fehlt, schaut hier im F.A.Q. nach. Dort sind alle C++ Redistributables (Programme von verifizierten Herstellern, die .dll's installieren) aufgelistet, die ihr installiert haben solltet.
mysql_pquery ist auch nur in bestimmten Szenarios schneller als mysql_tquery. mysql_pquery ist nie immer schneller als mysql_tquery.Abgesehen von den hier und von anderen erwähnten Sachen ist das Tutorial relativ okay.
-
Ja natürlich könnte ich, das & das machen ..
Aber wenn man die Überschrift liest, dann merkt man ganz schnell das es ein Simples Anmelduns System darstellen soll.
Dazu habe auch noch geschrieben, ob es sich für anfänger lohnt, wird man dann ja sehen
Aber trotzdem Danke, das du hier deine Kritik oder Meinung rauslässt, je wie mans nimmst -
Ich habe dir nur geschrieben, dass du einen Fehler bei der mysql_errno() Abfrage hast, der Code ein bisschen unordentlich eingerückt ist und dir den 2. Parameter bei mysql_log() erklärt (damit DU es verstehst und damit DU entscheiden kannst ob du Anfängern empfiehlst, das etwas übersichtlichere Logging anzubieten oder nicht). Das Code-Einrücken ist meine Meinung, mysql_errno() begründete Kritik und der Log-Typ ein Tipp.
-
Guten Abend,
Mein Name lautet MrPawn.
Ich habe ja gesagt, ich finde es gut das du deine Meinung/Kritik ausstrahlst.
Sonst wären deine Beiträge in diesem Thema ja unnütz.
Ich werde es die Woche Vielleicht mal bearbeiten ..Mit freundlichen Grüßen,
MrPawn
-
Hallo.
Ich habe genau dies gemacht wie du es gesagt/geschrieben hast.
Und bei mir springt das Plugin nicht an MySQL.Bitte um hilfe, danke im voraus.
-
Beitrag von John Wayne ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Hallo.
Ich habe genau dies gemacht wie du es gesagt/geschrieben hast.
Und bei mir springt das Plugin nicht an MySQL.Bitte um hilfe, danke im voraus.
Ich habe dich mal per Private Nachricht Kontaktiert, mal hoffen dass ich dir Helfen kann.
EDIT://
Schau mal auf dem TS vorbei,mfg
-
Da es bisher noch keiner gepostest hat:
Zitatmysql_escape_string(Spielername(playerid), Spielername(playerid));
format(query, sizeof(query), "SELECT * FROM user WHERE username='%s'", Spielername(playerid) /* In dieser Zeile nur das Spielername() */ );
Das funktioniert nicht so wie du es möchtest. Spielername ist eine Get Funktion, nicht Set. -
Da es bisher noch keiner gepostest hat:
Das funktioniert nicht so wie du es möchtest. Spielername ist eine Get Funktion, nicht Set.
Ok, danke für den Hinweis.Man könnte es ja so machen:
mysql_format(variable, query, sizeof query, "SELECT * FROM user WHERE username='%e'", Spielername(playerid));
mfg
-
Hat jemand das Plugin für Linux?
-
Ja, ich habe es.
Einmal ist dort die r38 enthalten und die r39-2.
Ich würde dir zum aktuellem Zeitpunkt r39-2 empfehlen.Die Funktionen heißen gleich.
mfg
-
Hallo.
obwohl ich genau nach diesem Tutorial gegangen bin bekomme ich Haufenweise Errors.
Code
Alles anzeigen(39) : error 017: undefined symbol "mysql_connect" (40) : error 017: undefined symbol "mysql_errno" (40) : error 017: undefined symbol "mysql_log" (62) : error 035: argument type mismatch (argument 1) (64) : error 004: function "mysql_tquery" is not implemented (79) : error 017: undefined symbol "cache_get_data" (78) : warning 203: symbol is never used: "num_fields" (267) : warning 213: tag mismatch (269) : error 035: argument type mismatch (argument 1) (271) : error 004: function "mysql_tquery" is not implemented (277) : error 055: start of function body without function header (278) : error 010: invalid function or declaration (280) : error 010: invalid function or declaration (282) : error 010: invalid function or declaration (285) : error 017: undefined symbol "playerid" (285) : error 054: unmatched closing brace ("}") (285 -- 289) : error 010: invalid function or declaration (285 -- 289) : fatal error 107: too many error messages on one line
Ich weiß nicht was ich jetzt machen muss, da ich noch ein Anfänger bin.
Mfg
-
Hallo.
obwohl ich genau nach diesem Tutorial gegangen bin bekomme ich Haufenweise Errors.
Code
Alles anzeigen(39) : error 017: undefined symbol "mysql_connect" (40) : error 017: undefined symbol "mysql_errno" (40) : error 017: undefined symbol "mysql_log" (62) : error 035: argument type mismatch (argument 1) (64) : error 004: function "mysql_tquery" is not implemented (79) : error 017: undefined symbol "cache_get_data" (78) : warning 203: symbol is never used: "num_fields" (267) : warning 213: tag mismatch (269) : error 035: argument type mismatch (argument 1) (271) : error 004: function "mysql_tquery" is not implemented (277) : error 055: start of function body without function header (278) : error 010: invalid function or declaration (280) : error 010: invalid function or declaration (282) : error 010: invalid function or declaration (285) : error 017: undefined symbol "playerid" (285) : error 054: unmatched closing brace ("}") (285 -- 289) : error 010: invalid function or declaration (285 -- 289) : fatal error 107: too many error messages on one line
Ich weiß nicht was ich jetzt machen muss, da ich noch ein Anfänger bin.
Mfg
Benutzt du auch die MySQL version? Laut den Errors nicht.
Weil wie man sieht findet er zum bsp: mysql_connect nicht. -
Ach ich Idiot habe vergessen das Include oben reinzuschreiben *Facepalm*
Nun bekomme ich nur noch diese Errors:
Code(268) : warning 213: tag mismatch (278) : error 055: start of function body without function header (279) : error 010: invalid function or declaration (281) : error 010: invalid function or declaration (283) : error 010: invalid function or declaration (286) : error 021: symbol already defined: "Spielername" (286) : error 029: invalid expression, assumed zero (286) : error 021: symbol already defined: "Spielername" (286) : fatal error 107: too many error messages on one line
-
Beitrag von Pascal. ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Hallo.
obwohl ich genau nach diesem Tutorial gegangen bin bekomme ich Haufenweise Errors.
Code
Alles anzeigen(39) : error 017: undefined symbol "mysql_connect" (40) : error 017: undefined symbol "mysql_errno" (40) : error 017: undefined symbol "mysql_log" (62) : error 035: argument type mismatch (argument 1) (64) : error 004: function "mysql_tquery" is not implemented (79) : error 017: undefined symbol "cache_get_data" (78) : warning 203: symbol is never used: "num_fields" (267) : warning 213: tag mismatch (269) : error 035: argument type mismatch (argument 1) (271) : error 004: function "mysql_tquery" is not implemented (277) : error 055: start of function body without function header (278) : error 010: invalid function or declaration (280) : error 010: invalid function or declaration (282) : error 010: invalid function or declaration (285) : error 017: undefined symbol "playerid" (285) : error 054: unmatched closing brace ("}") (285 -- 289) : error 010: invalid function or declaration (285 -- 289) : fatal error 107: too many error messages on one line
Ich weiß nicht was ich jetzt machen muss, da ich noch ein Anfänger bin.
Mfg
Augenscheinlich hast du MySQL nicht Includiert.
Dies machst du mit #include <a_mysql>, bitte befolge aber genau die Installationsschritte!
mfg
-
mysql_escape_string(Spielername(playerid), Spielername(playerid));
Ich wollte mal kurz etwas dazu sagen, dass ist absoluter Schwachsinn.Das wäre wie wenn man folgendes versucht:
func() = "Hey";
/*
In Pawn kann man func() = "Hallo"; zwar wirklich ohne Fehler compilen, aber das macht keinen Sinn. Denn man kann einer Funktion keine neuen Werte zuweisen, da diese durch das return festgelegt werden.
*/
printf("%s",func()); //Ich hoffe jedem ist klar, dass hier 'hallo' rauskommt...und nicht Heystock func() {
new var[] = "'hallo'";
return var;
}mfg.
-