Solved Execute PHP Script on Website

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

Status
Not open for further replies.

xXSwainXx

Active Member
Jan 27, 2017
55
5
8
25
Hey,

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 :emoji_grinning: is it possible to make this in skript also?
 
I will try :emoji_grinning:
[doublepost=1601585771,1601410252][/doublepost]How i can ask if the user exist??
[doublepost=1601587403][/doublepost]Becouse when i execute my command

Code:
command /forum [<text>] [<text>]:
    description: Registrierung für das Forum SkyVenix
    aliases: reg
    trigger:
        if arg-1 is not set:
            message "&7Forum &1> &cNutze Bitte /forum <email> <passwort>"
            stop
        else if arg-2 is not set:
            message "&7Forum &1> &cNutze Bitte /forum <email> <passwort>"
        else if arg-2 is set:
            message "&7Forum &1> &aEin Foren Account wird für dich angelegt..."
            send a request to "https://skyvenix.eu/mc-user-create.php?parameter1=%player%&parameter2=%UUID of player%&parameter3=%arg-1%&parameter4=%arg-2%"
            message "https://skyvenix.eu/mc-user-create.php?parameter1=%player%&parameter2=%UUID of player%&parameter3=%arg-1%&parameter4=%arg-2%"

There is nothing hepening but when i click on the link in the chat in minecraft it works :emoji_frowning: what i am making false? and in the console is also nothing...
 
I will try :emoji_grinning:
[doublepost=1601585771,1601410252][/doublepost]How i can ask if the user exist??
[doublepost=1601587403][/doublepost]Becouse when i execute my command

Code:
command /forum [<text>] [<text>]:
    description: Registrierung für das Forum SkyVenix
    aliases: reg
    trigger:
        if arg-1 is not set:
            message "&7Forum &1> &cNutze Bitte /forum <email> <passwort>"
            stop
        else if arg-2 is not set:
            message "&7Forum &1> &cNutze Bitte /forum <email> <passwort>"
        else if arg-2 is set:
            message "&7Forum &1> &aEin Foren Account wird für dich angelegt..."
            send a request to "https://skyvenix.eu/mc-user-create.php?parameter1=%player%&parameter2=%UUID of player%&parameter3=%arg-1%&parameter4=%arg-2%"
            message "https://skyvenix.eu/mc-user-create.php?parameter1=%player%&parameter2=%UUID of player%&parameter3=%arg-1%&parameter4=%arg-2%"

There is nothing hepening but when i click on the link in the chat in minecraft it works :emoji_frowning: what i am making false? and in the console is also nothing...
Have you looked at the http response? It'll probably have more information
 
@TPGamesNL but when i execute the command the server is not executing the link

Code:
send a request to "https://skyvenix.eu/article/1-staff-anforderungen/"

https://prnt.sc/urzkzy <-- the site has 0 views why
[doublepost=1601721001,1601652682][/doublepost]Hey Guys,

The solution is now this Code:

Code:
send a request to "https://skyvenix.eu/mc-user-create.php?parameter1=%player%&parameter2=%UUID of player%&parameter3=%arg-1%&parameter4=%arg-2%&parameter5=%{_userperm::%player%}%" with the headers "User-Agent: MeinUserAgent/s8HLVxQIDC"


The Problem was that Cloudflare has blocked the request and than i have added the "User-Agent" and then it works :emoji_grinning:

Thx for your help @TPGamesNL
 
Status
Not open for further replies.