Start_session() 2 variables
Résolu/Fermé- Start_session() 2 variables
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- 2 comptes whatsapp - Guide
- France 2 uhd - Accueil - TV & Vidéo
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
4 réponses
1 août 2022 à 07:42
bonjour,
Je pense que ta première tentative est correcte.
Cependant, où assignes-tu une valeur à la variable $Nom?
Bonjour yg_be,
La valeur de la variable $Nom vient comme $NumMembre d'un formulaire précédent sur une page formulaire.php envoyé dans la bdd par une page envoi.php sur laquelle, les personnes peuvent alors en cliquant sur une icône uploader des fichiers c'est dans ce dernier code de la page envoiPJ.php que je renomme le fichier et l'upload.
Est-ce que cela répond à la question ? Sinon, je ne sui spas sûr de l'avoir comprise, désolé.
1 août 2022 à 13:31
Difficile de faire une suggestion sans voir l'ensemble du code.
Voici le code du fichier envoi.php
<?php /* ini_set('display_errors', '1'); error_reporting(E_ALL); Echo "TEST"; */ //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //déclaration des variables $Nom = $_POST['Nom']; $Prenom = $_POST['Prenom']; $NumMembre = $_POST['NumMembre']; $Adresse =$_POST['Adresse']; $CP =$_POST['CP']; $Ville =$_POST['Ville']; $Tph = $_POST['Tph']; $Mail = $_POST['Mail']; $NumBrevetULM = $_POST['NumBrevetULM']; $Classe1 = $_POST['Classe1']; $Classe2 = $_POST['Classe2']; $Classe3 = $_POST['Classe3']; $Classe4 = $_POST['Classe4']; $Classe5 = $_POST['Classe5']; $Classe6 = $_POST['Classe6']; $FCL055 = $_POST['FCL055']; $Machine = $_POST['Machine']; $Immat = $_POST['Immat']; $Vitesse = $_POST['Vitesse']; $Autonomie = $_POST['Autonomie']; $Radio = $_POST['Radio']; $Transp = $_POST['Transp']; $Taille = $_POST['Taille']; $Commentaires = $_POST['Commentaires']; //test d'affichage des variables /* echo $Nom.'<br>'; echo $Prenom.'<br>'; echo $NumMembre.'<br>'; echo $Adresse.'<br>'; echo $CP.'<br>'; echo $Ville.'<br>'; echo $Tph.'<br>'; echo $Mail.'<br>'; echo $NumBrevetULM.'<br>'; echo $Classe1.'<br>'; echo $Classe2.'<br>'; echo $Classe3.'<br>'; echo $Classe4.'<br>'; echo $Classe5.'<br>'; echo $Classe6.'<br>'; echo $FCL055.'<br>'; echo $Machine.'<br>'; echo $Immat.'<br>'; echo $Vitesse.'<br>'; echo $Autonomie.'<br>'; echo $Radio.'<br>'; echo $Transp.'<br>'; echo $Taille.'<br>'; echo $Commentaires.'<br>'; */ //Test OK => passage en commentaire //on inclut le fichier de connexion à la bdd require_once "../secure/cnxBddADT.php"; //$sth appartient à la classe PDOStatement $sth = $bdd->prepare("INSERT INTO Inscriptions_rallye (Nom, Prenom, NumMembre, Adresse, CP, Ville, Tph, Mail, NumBrevetULM, Classe1, Classe2, Classe3, Classe4, Classe5, Classe6, FCL055, Machine, Immat, Vitesse, Autonomie, Radio, Transp, Taille, Commentaires) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $sth->execute(array($Nom, $Prenom, $NumMembre, $Adresse, $CP, $Ville, $Tph, $Mail, $NumBrevetULM, $Classe1, $Classe2, $Classe3, $Classe4, $Classe5, $Classe6, $FCL055, $Machine, $Immat, $Vitesse, $Autonomie, $Radio, $Transp, $Taille, $Commentaires)); echo '<br><br> Votre inscription a bien été transmise. Merci <br><br><br> Vous pouvez adresser vos justificatifs : Carte Nationale d\'Identité, Passeport, Carte jaune, brevet ULM, ... (en version pdf) en suivant ce lien : <a href="EnvoiPJ.php?NumMembre='.urlencode($NumMembre).'"><img src="" border="0" align="absmiddle" /></a> <br><br> <br><br> <p align="right"> Vous pouvez quitter votre navigateur avec la croix en haut à droite ;-)        </p>'; ?>
et là celui de envoiPJ.php qui s'ouvre à partir du précédent.
<?php // Page pour ajout des PJ lors de l'inscription. // session_start(); // pour garder la variable $NumMembre après envoi d'un fichier $NumMembre = !empty($_GET['NumMembre']) ? $_GET['NumMembre'] : NULL; echo $NumMembre; //affichage pdt développement if($NumMembre){ $_SESSION['NumMembre'] = $NumMembre; } //On vérifie que $NumMembre est bien là $NumMembre = !empty($_SESSION['NumMembre']) ? $_SESSION['NumMembre'] : NULL; /* // Idem pour le Nom echo $Nom; //affichage pdt développement if($Nom){ $_SESSION['Nom'] = $Nom; } //On vérifie que $Nom est bien là $Nom = !empty($_SESSION['Nom']) ? $_SESSION['Nom'] : NULL; //Affichage pdt développement /* if($NumMembre){ echo "affichage 1 N° Membre : ".$NumMembre."<br> "; } else { echo "1 On a perdu la variable Num"; } if($Nom){ echo "affichage 1 Nom : ".$Nom."<br> "; } else { echo "1 On a perdu la variable Nom"; } */ // suite du code après la partie HTML pour avoir les résultats affichés sous le HTML ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Formulaire d'upload de fichiers</title> </head> <body> <form action="EnvoiPJ.php" method="post" enctype="multipart/form-data"> <h2>Upload de vos fichiers</h2> <div> <label for="fileUpload">Fichier:</label> <input type="file" name="fichier" id="fileUpload"> <input type="submit" name="submit" value="Envoyer"> <p><strong>Note:</strong> Seuls les formats .pdf sont autorisés avec une taille maximale de 1,0 Mo.</p> </div> </form> </body> </html> <?php // Suite du code // Récup du NumMembre (ne fonctionne pas s'il est dans la 1ère partie : à cause de la coupure avec le HTML) $NumMembre = !empty($_SESSION['NumMembre']) ? $_SESSION['NumMembre'] : NULL; /* //Affichage pdt développement if($NumMembre){ echo "affichage 2 N° Membre : ".$NumMembre."<br> "; } else { echo "2 On a perdu la variable Num"; } */ // Vérifier si le formulaire a été soumis if($_SERVER["REQUEST_METHOD"] == "POST"){ // Vérifie si le fichier a été uploadé sans erreur. if(isset($_FILES["fichier"]) && $_FILES["fichier"]["error"] == 0){ $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "pdf" => "application/pdf"); $filename = $_FILES["fichier"]["name"]; $filetype = $_FILES["fichier"]["type"]; $filesize = $_FILES["fichier"]["size"]; //On vérifie que $NumMembre et $Nom sont bien là (pdt le développement) // echo "affichage 3 N° Membre, Nom et fichier : ".$NumMembre.", ".$Nom." et ".$filename."<br> "; // Vérifie la taille du fichier - 1,5Mo maximum $maxsize = 1572864; // 1,5*1024*1024 if($filesize > $maxsize) die("<font color=red>Error: La taille du fichier est supérieure à la limite autorisée.</font>"); // Formate le nom du fichier en remplaçant les caractères accentués. $table = array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', ); $filename = strtr($filename, $table); // Mettre le nom du fichier en minuscule (surtout pour l'extension) $filename = strtolower($filename); // En remplaçant les caractères autres que l'alphabet et les chiffres par des tirets (évite entre autre "hack.php\0.pdf" par exemple $filename = preg_replace('#([^.a-z0-9]+)#i', '-', $filename); // Ajoute NumMembre et Nom devant le nom du fichier // $iden=$NumMembre.'-'.$Nom; // echo $iden.'<br>'; if($NumMembre && $filename){ // if($iden && $filename){ $filename = $NumMembre." ".$filename; //$filename = $iden." ".$filename; } // echo $filename; // Vérifie l'extension du fichier $ext = pathinfo($filename, PATHINFO_EXTENSION); if(!array_key_exists($ext, $allowed)) die("<font color=red>Erreur : Veuillez sélectionner un format de fichier valide.</font>"); // Vérifie le type MIME du fichier if(in_array($filetype, $allowed)){ // Vérifie si le fichier existe avant de le télécharger. if(file_exists("uploads/" . $filename)){ echo $filename . " existe déjà."; } else{ move_uploaded_file($_FILES["fichier"]["tmp_name"], "uploads/" . $filename); echo "<font color=green> Votre fichier a été téléchargé avec succès. </font><br> Fichier = $filename - Taille = $filesize - Type MINE = $filetype.<br><br> Lorsque vous aurez terminé d'envoyer les fichiers souhaités, il suffira de fermer la page (croix en haut à droite)"; //Partie effacée d'envoi d'un mail pour information de l'upload. // // } } else{ echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer."; } } else{ echo "Error: " . $_FILES["fichier"]["error"]; } } ?>
1 août 2022 à 14:15
Il manque une partie du code, peut-être formulaire.php?
Je pense que tu n'as pas compris comment fonctionnait l'enchainement des pages. Du coup, tu n'utilises pas correctement les variables de session.
Commence peut-être par expliquer ce que tu veux obtenir en réalité, ce que tu veux améliorer dans ton site.
1 août 2022 à 14:37
Je suggère:
- au début de envoi.php, ajoute "session_start();"
- dans envoi.php, ajoute, vers la fin: "$_SESSION['NumMembre'] = $NumMembre;" et "$_SESSION['Nom'] = $Nom;"
- dans envoiPJ.php, supprime tous les ""$_SESSION['...'] = ...;" et tous les "$NumMembre = ...;"
- dans envoiPJ.php, ajoute, après le "session_start();": "$NumMembre = $_SESSION['NumMembre'] ;" et "$Nom = $_SESSION['Nom'] ;"