קרדיט מלא לתמיר מפורום אחר.
נתחיל;
הגיעו לתיקייה server
שם תצרו קובץ Java חדש, בתוכו כתבו את זה:
קוד PHP:
package server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import net.login.LoginServer;
import database.DatabaseConnection;
public class AutoRegister {
public static boolean success;
public static boolean getAccountExists(String login) {
boolean accountExists = false;
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT name FROM accounts WHERE name = ?");
ps.setString(1, login);
ResultSet rs = ps.executeQuery();
if (rs.first()) {
accountExists = true;
}
rs.close();
ps.close();
} catch (Exception ex) {
System.out.println("Error acquiring the account of (" + login + ").");
}
return accountExists;
}
public static void createAccount(String login, String pwd, String eip) {
try {
PreparedStatement ipq = DatabaseConnection.getConnection().prepareStatement("SELECT lastknownip FROM accounts WHERE lastknownip = ?");
ipq.setString(1, eip.substring(1, eip.lastIndexOf(':')));
ResultSet rs = ipq.executeQuery();
if (!rs.first() || rs.last() && rs.getRow() < LoginServer.getInstance().AutoRegLimit()) {
try {
PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO accounts (name, password, email, birthday, macs, lastknownip) VALUES (?, ?, ?, ?, ?, ?)");
ps.setString(1, login);
ps.setString(2, pwd);
ps.setString(3, "default@email.***.co.il");
ps.setString(4, "0000-00-00");
ps.setString(5, "00-00-00-00-00-00");
ps.setString(6, eip.substring(1, eip.lastIndexOf(':')));
ps.executeUpdate();
ps.close();
success = true;
} catch (Exception ex) {
System.out.println("Error creating the account of (" + login + " | " + pwd + " | " + eip + ").");
}
}
rs.close();
ipq.close();
} catch (Exception ex) {
System.out.println("Error creating " + login + "'s account.");
}
}
}
לאחר מכן, הגיעו לקובץ LoginPasswordHandler.java
שם חפשו את זה;
קוד PHP:
int loginok = 0;
boolean ipBan = c.hasBannedIP();
boolean macBan = c.hasBannedMac();
מתחת לזה, הוסיפו את זה:
קוד PHP:
if (AutoRegister.getAccountExists(login)) {
loginok = c.login(login, pwd, ipBan || macBan);
} else if (LoginServer.getInstance().AutoRegister() && (!ipBan || !macBan)) {
AutoRegister.createAccount(login, pwd, c.getSession().getRemoteAddress().toString());
if (AutoRegister.success) {
loginok = c.login(login, pwd, ipBan || macBan);
}
ותוודאו שיש לכם את ה import הבא:
קוד PHP:
import server.AutoRegister;
ובסוף תריצו את זה בSQL
ALTER TABLE `accounts` ADD COLUMN `lastknownip` TINYTEXT NULL;
פועל וניבדק
קרדיט מלא רק לתמיר.