passer un tableau via url

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 : passer un tableau via url

ze solution

par toto37 » 21 nov. 2007, 13:01

Je sais bien que par l'URL, c'est dangeureux, ce que je voulais dire c'est qu'il ne faut pas utiliser à tire la rigo les sessions.

par choubix » 20 nov. 2007, 21:28

c'est aussi vrai que le site manque de planning... il faut dire que je ne savais pas trop par ou commencer...

ca existe des "documents type" afin de realiser un site (un terme qui me vient mais en anglais: "project charter")

par zeus » 20 nov. 2007, 18:44

Alors, rappel de 2 points :

1/ Tout d'abord, sache qu'il ne faut pas penser 1 script = 1 tache.
Il est tout a fait possible d'avoir une fonction qui tire les gagnant et te retourne le tableau des id, puis une autre fonction qui envoi les mails. Il ne te reste plus qu'a développer un script qui fait tout ça.

En cherchant à utiliser 2 scripts, tu te heurtes à un problème, celui de la transmission des informations. Avec un unique script qui appelle différentes fonction, tu n'auras plus ce problème ;)

2/ Dès que tu transmets des informations d'un script à un autre autrement que par SESSION, il faut que te les revérifient ;)

par choubix » 20 nov. 2007, 18:32

wow: pas la peine de se faire une petite bagarre pour ca ;)

je pourrais effectivement envoyer mon email via page1.php (on va l'appeler comme ca) mais je verifie que les noms des gagnants sur page1,php donc j'envois leur ID sur page2.php d'ou j'envois les emails.

c'est pour ca que je dois envoyer un tableau avec les Id a page2.php... (sans la verification, tout serait fait sur page1.php)

par naholyr » 20 nov. 2007, 18:01

C'est surtout que ça n'a rien à faire ni dans une session ni dans un get ou un post...

Pour resituer un peu les choses :
- Ta variable est "application-wide", elle ne dépend pas de l'utilisateur mais UNIQUEMENT des données stockées en base.
- Une session est "user-wide", elle contient des variables rattachées à l'utilisateur pour le temps de la session.
- GET et POST, c'est pour la communication, il faut voir ça comme "je te pose une question, tu me donnes la réponse". N'importe qui pouvant poser n'importe quelle question, voudrais-tu vraiment imaginer poser une question aussi critique que "pourrais-tu envoyer un mail à cette liste d'utilisateurs ?" ?...

C'est la même page qui devrait faire la requête et envoyer le mail, c'est pour ça que vous êtes en train de vous crêper le chignon sur "session ou get ?" c'est parce qu'aucun ne répond au besoin ici. Le système est mal pensé au départ.

par zeus » 20 nov. 2007, 18:00

Et passer toutes les données via le poste client, c'est une ENORME faille de sécurité ...

Toutes données provenant d'un poste client doit être validée puisqu'elle est potentiellement vérolée ;)
Donc, sachant qu'il est possible dans la configuration d'Apache (et surement de IIS) de limiter la taille des sessions, je pense qu'il est beaucoup plus sécurisé et pratique de passer des données propres à l'application en SESSION qu'en GET ou en POST

Sinon, pour en revenir à la question d'origine, je me demande plutôt pourquoi tu doit appeler une autre page ?
Soit tu stockes les résultats en BdD et tu n'as pas besoin de les transférer d'une page à une autre, soit les résultats sont limités à cette page et tu ferais mieux d'appeler une fonction qui envoi les mails plutôt que d'appeler un autre script ;)

ze solution

par toto37 » 20 nov. 2007, 17:25

Bof pour les sessions, c'est trop fait pour ça,il y a d'autre méthode pour passer les datas d'une seule page à une autre.

Les sessions sont la pour conserver les infos minimum pouvant t'identifier sur un site tout au long d'une navigation ( votre ID sur un site, un panier etc...),
il n'est pas souhaitable de les utiliser à torts et à travers,d'autant plus si c'est un site à forte charge, car n'oubliez pas que les sessions sont des fichiers stockés sur le serveur donc cela prend de l'espace disque, comme c'est monté en mémoire (comme les script d'ailleurs) je vous explique pas les problèmes de mémoire....

par choubix » 20 nov. 2007, 15:48

hum... je viens de tester les sessions et de recuperer les valeurs avec un for each...
simple!

y a t il des effets secondaires nefastes a utiliser les sessions pour cela docteur? ;)

par Truc » 20 nov. 2007, 15:13

Et les sessions ?
Bien plus facile à gérer

par d0m » 20 nov. 2007, 14:58

serialize "met à plat" n'importe quel objet y compris les tableaux. Tu n'auras qu'une seule valeur à passer dans ton url.

par choubix » 20 nov. 2007, 14:55

je vais regarder du cote des fonctions merci :)

pour ce qui est de passer le tableau dans l'url: il faut le decomposer. le truc c'est que comme le tableau ne sera jamais de taille egale j'aimerais bien faire ca differement qu'en codant directement la montableau[0], montableau[1] etcetc dans la barre d'url.

par jojolapine » 20 nov. 2007, 14:26

il y a aussi les fonctions serialize() et unserialize() ;-)

ze solution

par toto37 » 20 nov. 2007, 14:24

Bonjour,

Il est impossible de passer un tableau via une URL.

Par contre tu peux transformer ton tableau en chaine de caractères avant de le passer dans l'url et ensuite sur la page cible tu retransforme ta chaine en tableau.

Je t'invite donc à regarder les fonction

Code : Tout sélectionner

implode
et

Code : Tout sélectionner

explode
++

passer un tableau via url

par choubix » 20 nov. 2007, 13:31

hello,

j'ai un script ou je depouille les resultats d'un jeu.
j'affiche le nom, prenom et id des gagnants sur ma page avant de valider et de leur envoyer un email.

afin d'envoyer un email je dois recuperer les ID des gagnants et les envoyer dans une autre page.le truc: je peux avoir entre 1 et X gagnants. donc je dois passer les ID dans l'url via un tableau.

la question est : comment?

je ne vois pas commetn envoyer les ID correctement via l'url.
une autre boucle while?

merci! :)

<?php
session_start();

if (isset($_SESSION['level']) && $_SESSION['level'] == 2)
{
}
else
{
$_SESSION['error'] = "3";
header('Location: ../../errors/error.php');
}

require('../../includes/config.php');

//retrieve id_gifts + stock from teh address bar and secure the variables
$id_gifts = (isset($_GET['id_gifts']))?$_GET['id_gifts']:'';
$id_gifts = mysql_real_escape_string(htmlentities($id_gifts, ENT_QUOTES)); 

$stock = (isset($_GET['stock']))?$_GET['stock']:'';
$stock = mysql_real_escape_string(htmlentities($stock, ENT_QUOTES)); 

//select a random number of participants regardless of how many tickets they have played. limitation to the stock.
$query = sprintf("SELECT gifts_played.id_clients, clients.fname, clients.lname 
			FROM gifts_played, clients 
			WHERE id_gifts = '$id_gifts'
			AND clients.id_clients = gifts_played.id_clients
			GROUP BY id_clients
			ORDER BY RAND()
			LIMIT $stock",
			mysql_real_escape_string($id_gifts)
			);
$result = mysql_query($query) or die('Query failed. ' . mysql_error());

//starts the table here (outside php code)
?>
<table width="500" border="0">
  <tr>
    <td>Id</td>
    <td>First Name</td>
    <td>Last Name</td>
  </tr>

<?php

//shows the name and id of winners
$winners = array();
$i=0;
while ($row = mysql_fetch_assoc($result))
{
print"
  <tr>
    <td>$row[id_clients]</td>
    <td>$row[fname]</td>
    <td>$row[lname]</td>
  </tr>
";
$winners[]= "$row[id_clients]";
$i++;
}

?>
  <tr>
    <td colspan="4"> mettre un lien ici vers process_winners.tpl.php?winners=tableau ici???</td>
  </tr>
</table>