Hey,
I have a PHP file for creating a User on my Website:
So i have also a java code:
Can i also make a Skript?? becouse i can't work with java is it possible to make this in skript also?
I have a PHP file for creating a User on my Website:
Code:
<?php
//UserAgent abfrage damit nicht jeder neue accounts erstellen kann.
if(($_SERVER['HTTP_USER_AGENT'] == "MeinUserAgent/s8HLVxQIDC") === false){
//Fals Useragent falsch sein sollte gibt es ein 'Invalid Page' zur�ck und l�st die Page auslaufen
echo('NÖ');die;
}
$username = "";
$email = "";
$password = "";
$uuid = "";
$isVerified = "1";
$mcName = $username;
$rang = "";
//Hier werden die �bergebenen POST variablen ausgelesen und in die lokalen variablen geschrieben diesen schritt k�nnte man
//sich sparen mit $_POST['username']
foreach ($_POST as $key => $value) {
switch ($key) {
case 'username':$username = $value;break;
case 'email':$email = $value;break;
case 'password':$password = $value;break;
case 'uuid':$uuid = $value;break;
case 'isVerified':$uuid = $value;break;
case 'mcName':$mcName = $value;break;
default:break;
}
}
//Eine IF abfrage ob die Lokalen Variablen gesetzt sind
if($username!="" and $email!="" and $password!="" and $uuid!="" and $isVerified!="" and $mcName!=""){
//LINK = link zur global.php welche normalerweise im Hauptverzeichnis des WSC liegt
if (!defined('RELATIVE_WBB_DIR')) define('RELATIVE_WBB_DIR', 'LINK');
require('global.php');
//Hier wird der data[] geschrieben in den wir Username/Password/Email hinterlegen
$data = array('username' => $username,'password' => $password,'email' => $email, 'isVerified' => $isVerified, 'mcName' => $mcName, 'uuid' => $uuid);
//array_map('trim', array) wird hier �fters benutzt hierbei handelt es sich um eine Funktion welche white_space im array zu l�schen damit keine
//falschen daten benutzt werden
$data = array_map('trim', $data);
//Nun wird es etwas tricky wir wollen ja �berpr�fen ob die Daten Valid sind.
//Wir greifen hierzu auf verschiedene Funktionen relativ zu.
// \wcf\util\UserRegistrationUtil leigt hierbei in /forum/wcf/lib/util/UserRegistrationUtil
//
//isValidUsername �berpr�ft den Username/Password/Email auf die eingestellten optionen
//getUserByUsername �berpr�ft ob Nutzer bereits existiert
//isValidEmail �berpr�ft die �bertragene Email adresse auf richtigkeit
//getUserByEmail �berpr�ft ob Email bereits existiert
$valid = \wcf\util\UserRegistrationUtil::isValidUsername($data['username']);
$userBool = \wcf\data\user\User::getUserByUsername($data['username']);
$validEmail = \wcf\util\UserRegistrationUtil::isValidEmail($data['email']);
$emailBoold = \wcf\data\user\User::getUserByEmail($data['email']);
//Hier kommen nun die IF abfragen welche das Script beenden fals z.B ein Username bereits registriert ist
//Die zur�ckgegeben echo sind frei erfunden
if(!$valid){echo("USERNAME_INVALID");die;}
if($userBool->getUserID()!=0){echo("USERNAME_ALREADY_EXIST");die;}
if(!$validEmail){echo("EMAIL_INVALID");die;}
if($emailBoold->getUserID()!=0){echo("EMAIL_ALREADY_EXIST");die;}
//Hier wird ein String in ein Benutzerdefiniertes Feld geschrieben kann man auch weglassen
$userAction = new \wcf\data\user\UserAction(array(), 'create', array(
'data' => $data
));
//Eintragung ohne Profilfeld
//$userAction = new \wcf\data\user\UserAction(array(), 'create', array('data' => $data));
//Die UserAction wird hier ausgef�hrt
$returnValues = $userAction->executeAction();
//$returnValues['returnValues'] gibt uns ein User Obj zur�ck wcf\lib\data\user\User
$user = $returnValues['returnValues'];
//Hier �bertragen wir die UserID zur�ck um sie in Java zu benutzen
echo ("ERFOLGREICH_REGISTRIERT:" . $user->getUserID());
//Nun k�nnen wir noch die Gruppen f�r unseren neuen User bearbeiten
$userAction = new \wcf\data\user\UserAction(array($user), 'addToGroups', array(
//Gruppe 12 ist bei mir die Spieler gruppe einzusehen sind die ID's im acp unter der Benutzergruppen
'groups' => [3],
//Ich m�chte die Standartgruppen nicht l�schen
'deleteOldGroups' => false,
//�ber diesen Schritt kann man sich streiten ob dieser n�tig ist da beim erstellen eines User die DefaultGroups
//bereits gesetzt sind
'addDefaultGroups' => true
));
//Action wird nun ausgef�hrt
$userAction->executeAction();
//Nun k�nnen wir noch ein Profilbild setzen dies Mach ich damit ich meinen Benutzer die Minecraft Avatare zu setzen
$userAvatarAction = new \wcf\data\user\avatar\UserAvatarAction(array($user->getUserID()), 'fetchRemoteAvatar', array(
'url' => "https://visage.surgeplay.com/head/128/".$uuidArray['uuid'],
'userEditor' => new \wcf\data\user\UserEditor($user)
));
$userAvatarAction->executeAction();
\wcf\system\user\storage\UserStorageHandler::getInstance()->reset(array($user->getUserID()), 'avatar');
}else{
echo('Angaben sind leer!');
}
?>
So i have also a java code:
Code:
public void register(final String username, UUID uuid,final String email,final String password){
new Thread(new Runnable() {
@Override
public void run() {
try{
//URL zur unseren selbst geschriebenen php Datei
URL url = new URL("LINK");
//Hier wird die Connection hergestellt und unser User-Agent eingestellt
URLConnection connection = (URLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "MeinUserAgent/s8HLVxQIDC");
//Wir wollen den Script eine anfrage senden also muss setDoOutput auf true stehen natürlich
//wollen wir eine Rückmeldung bekommen also setDoInput auch auf true damit können wir über
//php via echo() eine Rückmeldung geben
connection.setDoOutput(true);
connection.setDoInput(true);
PrintStream stream = new PrintStream(connection.getOutputStream());
//Hier werden die Felder gesetzt
stream.println("username=" + username);
stream.println("&email=" + email);
stream.println("&password=" + password);
stream.println("&uuid=" + uuid.toString());
//Hier wird der Stream ausgeführt
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
stream.checkError();
stream.flush();
stream.close();
String line = null;
//Durchlaufen des echo()
while ((line = reader.readLine()) != null) {
if(line.startsWith("USER_REGSITER_SUCCESS")){
if(userName.containsKey(p.getUniqueId())) userName.remove(p.getUniqueId());
System.out.println("Du hast dich erfolgreich registriert.");
System.out.println("Benutzername: §2" + p.getName());
System.out.println("Email Adresse: §2" + email);
System.out.println("Passwort: §2" + password);
}else if(line.equalsIgnoreCase("USERNAME_INVALID_EXCEPTION")){
System.out.println("Dein Spielername ist ungültig.");
}else if(line.equalsIgnoreCase("USERNAME_ALREADY_EXCEPTION")){
System.out.println("Du hast dich bereits registriert.");
}else if(line.equalsIgnoreCase("EMAIL_INVALID_EXCEPTION")){
System.out.println("Dine Email adresse enspricht nicht den vorgaben.");
}else if(line.equalsIgnoreCase("EMAIL_ALREADY_EXCEPTION")){
System.out.println("Deine Email Adresse ist bereits vergeben.");
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}).start();
}
Can i also make a Skript?? becouse i can't work with java is it possible to make this in skript also?