[RESOLU] $_POST ne fonctionne pas correctement

Eléphanteau du PHP | 34 Messages

04 mai 2018, 19:20

Bonjour,

J'ai actuellement une base de donnée avec plusieurs clé CD (pas de jeux, mais de mon logiciel), j'ai créer ma page en PHP pour pouvoir activer la clé CD si elle correspond a celle dans la base de donnée et cela m'ajoute normalement 30 jours pour utiliser le logiciel.

J'effectue donc un essai, je rentre ma clé valide, et j'appuie sur valider pour effectuer le $_POST. Ma page s'actualise, normal quoi.

Je constate quoi ? Que la clé ne fonctionne pas (aucun message d'erreur), mais la clé est valide (vu qu'elle est dans la BDD), en plus clair la page s'actualise mais les 30 jours ne s'ajoute pas et je ne peut pas accèder au bouton "téléchargement"

J'aurais aimer savoir, comment régler ce problème? Voici mon bout de code qui effectue le POST
if(isset($_POST['key_chlenix'])){
    $post_key = $_POST['key_chlenix'];
     
    $keys_from_db = $database->get("keys_table", "chlenix_1mnth", [
        "id" => 1
    ]);
     
    $keys_from_db_array = explode(" ", $keys_from_db);
     
    if (in_array($post_key, $keys_from_db_array)) {
        $array_key = array_search($post_key, $keys_from_db_array);
 
        unset($keys_from_db_array[$array_key]);
          
        $end_post_request = implode(" ", $keys_from_db_array);
          
        $date_wallhack = $database->get("users", "date", [
            "name" => $_SESSION["username"]
        ]);
         
        if($date_wallhack < date('Y-m-d')) {
            $curdateplus30 = date('Y-m-d', strtotime("+30 days"));
 
            $database->update("users", [
                "date" => $curdateplus30
            ], [
                "name" => $_SESSION["username"]
            ]);
        }
        else {
            $newdate = date('Y-m-d', strtotime($date_wallhack) + 30 * 24 * 3600);
             
            $database->update("users", [
                "date" => $newdate
            ], [
                "name" => $_SESSION["username"]
            ]);
        }
         
         $database->update("keys_table", [
                "chlenix_1mnth" => $end_post_request
            ], [
                "id" => 1
            ]);
    }
}
Formulaire HTML (mais aucun problème je pense.. xD)
<!-- Activate Chlenix Modal -->
<div class="modal fade" id="ActivateChlenixModal" tabindex="-1" role="dialog"
     aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                <h5 class="modal-title" id="exampleModalLongTitle">Activation de la clé pour XENOSHOOK FULL</h5>
            </div>
            <div class="modal-body">
                <form class="form" role="form" method="post" action="http://xenoshook.com/?panel" accept-charset="UTF-8" id="reg-nav">
                    <div class="form-group form_activate">
                        <label class="sr-only" for="exampleInputPassword2">Clé</label>
                        <input type="text" name="key_chlenix" class="form-control" placeholder="Clé" required>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-primary btn-block">Activer</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>
Pouvez- vous m'aider svp?
En l'attente de votre réponse.

Mammouth du PHP | 2703 Messages

04 mai 2018, 20:34

sans pouvoir exécuter le code ni le modifier ainsi :

echo "avant";
if(isset($_POST['key_chlenix'])){
$post_key = $_POST['key_chlenix'];
echo "apres ".$post_key;

et continuer à mettre des echo pour voir ce qui se passe, c'est difficile de trouver ce qui bloque.

Eléphanteau du PHP | 34 Messages

05 mai 2018, 01:10

sans pouvoir exécuter le code ni le modifier ainsi :

echo "avant";
if(isset($_POST['key_chlenix'])){
$post_key = $_POST['key_chlenix'];
echo "apres ".$post_key;

et continuer à mettre des echo pour voir ce qui se passe, c'est difficile de trouver ce qui bloque.
J'ai effectuer ce que tu m'a dit:
	echo "OK 12";
	if(isset($_POST['key_chlenix'])){
		$post_key = $_POST['key_chlenix'];
		echo "OK 11";
		$keys_from_db = $database->get("keys_table", "chlenix_1mnth", [
			"id" => 1
		]);
		echo "OK 26";
		$keys_from_db_array = explode(" ", $keys_from_db);
		echo "OK 27";
		if (in_array($post_key, $keys_from_db_array)) {
			echo "OK 1";
			$array_key = array_search($post_key, $keys_from_db_array);
			echo "OK 2";

			unset($keys_from_db_array[$array_key]);
			echo "OK 3";

			$end_post_request = implode(" ", $keys_from_db_array);
			 echo "OK 4";
			$date_wallhack = $database->get("users", "date", [
				"name" => $_SESSION["username"]
			]);
			echo "OK 28";
			if($date_wallhack < date('Y-m-d')) {
				echo "OK 6";
                $curdateplus30 = date('Y-m-d', strtotime("+30 days"));
				echo "OK 7";

				$database->update("users", [
					"date" => $curdateplus30
				], [
					"name" => $_SESSION["username"]
				]);
				echo "OK 35";
            }
            else {
				echo "OK 8";
                $newdate = date('Y-m-d', strtotime($date_wallhack) + 30 * 24 * 3600);
				echo "OK 9";
                $database->update("users", [
					"date" => $newdate
				], [
					"name" => $_SESSION["username"]
				]);
				echo "OK 10";
            }
			echo "OK 94";
			 $database->update("keys_table", [
					"chlenix_1mnth" => $end_post_request
				], [
					"id" => 1
				]);
				echo "OK 20";
		}
	}

Le site me retourne:
OK 12 OK 11 OK 26 OK 27

Donc je pense que c'est après le "OK 27" que sa bug.
A partir de cette ligne:
if (in_array($post_key, $keys_from_db_array)) {
Une idée ? o_O

Mammouth du PHP | 688 Messages

05 mai 2018, 07:23

l'echo ne sert pas seulement à savoir où l'on passe mais aussi à avoir le contenu des variables :
print_r($post_key);
print_r($keys_from_db_array);
print_r($keys_from_db);
if (in_array($post_key, $keys_from_db_array)) {

Eléphanteau du PHP | 34 Messages

05 mai 2018, 09:56

l'echo ne sert pas seulement à savoir où l'on passe mais aussi à avoir le contenu des variables :
print_r($post_key);
print_r($keys_from_db_array);
print_r($keys_from_db);
if (in_array($post_key, $keys_from_db_array)) {
Avec le print, $post_key retourne la clé que j'ai entrée, $keys_from_db_array me retourne l'array de toutes les clé de ma base de donnée et $keys_from_db me retourne aussi toutes les clé de ma base de donnée (et cet fois ci, sans array).

Oui je sais que le post ne sert pas seulement à ceci :)

Eléphanteau du PHP | 34 Messages

05 mai 2018, 11:40

J'ai refait tout mon code, tout fonctionne à merveille mais 'ai un problème avec l'ajout de 30 jour pour l'utilisateur, toutes mes requetes s'execute, mais celle pour ajouter 30 jour ne fonctionne pas.
		if($cle_existe) {
			echo "existe";
			$update_date =$bdd->prepare("SELECT date WHERE users='".$_SESSION["username"]."'");
			$update_date->execute();
			$curdateplus30 = date('Y-m-d', strtotime("+30 days"));
			$newdate = date('Y-m-d', strtotime($update_date) + 30 * 24 * 3600);
			
			$update_date2 =$bdd->prepare("UPDATE users SET date='". $newdate ."' WHERE users='".$_SESSION["username"]."'");
			$update_date2->execute();
			
			$deletecle=$bdd->prepare("DELETE FROM keys_table WHERE xenos_full_1mois='".$_POST['cle_xenosfull']."'");
			$deletecle->execute();
		} else {
			echo "existe pas";
		}
Une solution svp ?

Eléphanteau du PHP | 34 Messages

05 mai 2018, 21:13

Résolu.