php et session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php et session

Re: php et session

par Saian » 25 févr. 2020, 12:30

Dans la logique, si tu veux supprimer une fois le convert effectué, c'est à la fin de ce dernier que tu devrais mettre le unlink et le unset.

Re: php et session

par gentil_ecureuil » 25 févr. 2020, 09:19

bonjour,

Je viens de me rendre compte que si je sors du programme php sans être passé dans le formulaire du début où j'ai
---
unlink($_SESSION['filepath']);// supprime le fichier
unset($_SESSION['filepath']);// supprime l'index de la session
session_unset (); // On détruit les variables de notre session
session_destroy (); // On détruit notre session
---

1)
Le fichier qui est dans 'upload/file.csv';' n'est pas détruit.
2)
Si je ne mets pas la ligne
unlink($_SESSION['filepath']);// supprime le fichier
Le fichier n'est pas détruit.

C'est normal ou pas?

Merci
Anne

Re: php et session

par gentil_ecureuil » 24 févr. 2020, 14:39

J'ai changé ligne à partir de la ligne 297
----
print_html_header();
affich($_SESSION['fichier_name'],$delimiter,$_SESSION['fichier_size'],$telfixe);
echo "Erreur pas trouvé pas de fichier <br>";
erreurs($_SESSION['filepath'],$delimiter,$telfixe);
}

}
else
{
print_html_header();

if ( isset($_REQUEST["retour"]) )
{
----

par ce code

---
print_html_header();
affich($_SESSION['fichier_name'],$delimiter,$_SESSION['fichier_size'],$telfixe);
echo "Erreur pas trouvé pas de fichier <br>";
erreurs($_SESSION['filepath'],$delimiter,$telfixe);
}

}

if ( !isset($_REQUEST["convert"]) && !isset($_REQUEST["verif"]) )
{

print_html_header();

if ( isset($_REQUEST["retour"]) )
{
----

Je viens dé-commenter ces 2 lignes
session_unset ();
session_destroy ();

Maintenant c'est ok

Maintenant il va falloir que je commente tous les echo ;)

Re: php et session

par Saian » 24 févr. 2020, 14:03

Tu peux faire du debug en php aussi avec xdebug mais c'est pas forcément simple à configurer si tu as pas le bon environnement.

Tu peux basiquement utiliser echo pour voir si le script passe à tel où tel endroit (attention aux redirections qui peuvent t'empêcher de les voir).

Je persiste, si cette condition if ( isset($_REQUEST["verif"]) ) n'est pas vrai alors dans le else le script va vider et détruire la session.
Sauf si tu es passées dans if(isset($_REQUEST["convert"])) et le else de if(empty($categorie)) { qui fait un exit.

PS : en fait justement si le convert est en erreur if(empty($categorie)) {, alors la session va être vidée car le script va passer plus bas sur les deux lignes incriminées. Si tu ajoutes un exit à la fin du if(isset($_REQUEST["convert"])) ça devrait aller mieux si ça ne pose pas de problème au niveau de l'utilisation (un formulaire qui devrait s'afficher mais ne peut plus car plus bas ?).

Re: php et session

par gentil_ecureuil » 24 févr. 2020, 13:54

Je ne pense pas.
Je fais retour sur verif et il m'affiche une erreur qui vient de verif et je vois qu'il n'y a plus rien dans session.
Rien dans les logs.

C'est peut-être mon test qui n'est pas bon
// le fichier ne vient pas de convert (ligne 169)
if(empty($_SESSION['fichier_name']))

Je viens de commenter ces 2 lignes
// session_unset ();
// session_destroy ();

Je retrouve les choses de session donc il doit passer sur unset et destroy

Il faut que je revois mon code.

Comment voir où il passe?

J'ai programmé sur gros système. C'était facile de mettre un point d'arrêt et suivre pas à pas ce qui se passait.

Avec PHP, Je ne sais pas faire.
C'est peut-être la version de php (5.3) qui pose problème?

Anne

Anne

Re: php et session

par Saian » 24 févr. 2020, 13:30

Bonjour Anne, tu as un else au if verif ou tu appelles session_unset et session_destroy. Le code ne passerait-il pas sur ces lignes dans le cas qui te pose problème ?

php et session

par gentil_ecureuil » 24 févr. 2020, 02:11

bonjour,

J'ai un problème avec les sessions

J'ai mis ma prose sur pastebin
https://pastebin.com/US7YMg1u

J'ai un premier formulaire où je demande un fichier csv, le délimiteur du fichier et si le fichier csv est pour téléphone fixe ou pas.
Je valide avec (ligne 415)
<input type="submit" name="verif" value="selectionner la catégorie que vous voulez" style="width: 100%;">

Je valide pour demander le ou les catégories pour transformer le fichier csf en vcf (vcard)

if ( isset($_REQUEST["verif"]) ) (ligne 146)
...
// le fichier ne vient pas de convert (ligne 169)
if(empty($_SESSION['fichier_name']))
{
$_SESSION['fichier_name'] = $_FILES["file"]["name"];
$_SESSION['fichier_type'] = $_FILES["file"]["type"];
$_SESSION['fichier_size'] = $_FILES["file"]["size"];
$_SESSION['fichier_error'] = $_FILES["file"]["error"];

echo "Nom du fichier milieu : ".$_SESSION['fichier_name']."<br>";

/*
$_SESSION['fichier_tmp_name'] = $_FILES["file"]["tmp_name"];
$_SESSION['fichier_file'] = $_FILES["file"];
$_SESSION['fichier_file1'] = $_FILES;
*/

$destFilepath = 'upload/file.csv';
move_uploaded_file($_FILES['file']['tmp_name'], $destFilepath);
$_SESSION['filepath'] = $destFilepath;
}

Tout se passe bien.
les lignes tout en haut
----
Nom du fichier avant :
Nom du fichier milieu : 2020-02-12_01-23_Friends.csv
Nom du fichier après : 2020-02-12_01-23_Friends.csv
----
Je vérifie et le formulaire s'affiche pour demander la ou les catégories à sélectionner.
Je valide avec (ligne 267)
<input type="submit" name="convert" value="convert" style="width: 100%;">

if(isset($_REQUEST["convert"])) // detect upload of file (ligne 119)

Si j'ai sélectionné au moins une catégorie tout ce passe bien

Si je n'ai pas sélectionné de catégorie :
----
csv2vcf: convert *.csv to *.vcf
Nom du fichier : 2020-02-12_01-23_Friends.csv
Taille du fichier : 7.1826171875 kB
Sélecteur du fichier csv : ';'
Tel fixe : 'non'
Nom du fichier temporaire session : upload/file.csv
Catégorie : ''
Vous devez sélectionner au moins une catégorie
----

Je fais 'retour'
----
Nom du fichier avant :
Nom du fichier milieu :
Nom du fichier après :
csv2vcf: convert *.csv to *.vcf
Nom du fichier :
Taille du fichier : 0 kB
Sélecteur du fichier csv : ';'
Tel fixe : 'non'
Erreur pas trouvé pas de fichier
----

Quand je reviens de convert sur verif , pourquoi Il ne trouve pas $_SESSION['fichier_name'] (ligne 162) ???

J'espère que vous n'allez pas avoir peur de ma prose.

Merci pour votre aide
Anne