CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

nombre impressionnant de $_session

Pseudo supprimé
Pseudo supprimé 26 juin 2010 à 21:17:02

bonjour,

j'ai 22 variables de session, contenant la plupart un timestamp, est-ce trop ? Est-ce que cela ne va pas surcharger le serveur et le rendre trop lent :question:

merci !

Pseudo supprimé
Pseudo supprimé 26 juin 2010 à 21:19:58

je précise que c'est un timestamp pour chacune des pages du site, qui vérifie que le dernier chargement de la page par le client remonte à plus de 5 secondes, pour éviter le spam, et qui enregistre ensuite le nouveau time() du moment où le client charge la page :)

deepblue
deepblue
Niveau 16
28 juin 2010 à 01:16:23

Je désactives mes cookies et ta sécurité ne sert plus à rien. Sinon, utilises des array :

$_SESSION['pages_timestamps'] = array();

$_SESSION['pages_timestamps']['page1] = ton_timestamp;
$_SESSION['pages_timestamps']['page2] = ton_timestamp;

etc

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 14:30:05
  1. Je désactives mes cookies et ta sécurité ne sert plus à rien

:d) pas de cookies = pas de session = pas d'affichage si (!isset($_SESSION)) :ok:

ah oui je vais utiliser les arrays :ok:

merci !

deepblue
deepblue
Niveau 16
28 juin 2010 à 14:47:01

Pour des raisons de politique de sécurité, les cookies ne sont pas activable sur des navigateurs. Bloquer l'accès à des pages car ta session n'existe pas est débile, d'autant plus que c'est pour éviter un "spam". Qui plus est, si tu veux un référencement de tes pages sur des moteurs, tu enverras chier des bots qui ne supportent pas tous les cookies.

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 17:29:38
  1. Bloquer l'accès à des pages car ta session n'existe pas est débile, d'autant plus que c'est pour éviter un "spam".

:d) en même temps il n'y a pas d'autre solutions pour éviter d'être spammer :-(
Le client pourrait toujours s'amuser à recharger 1000 fois la page par seconde.

  1. tu enverras chier des bots qui ne supportent pas tous les cookies

:d) la plupart des pages de mon site varie en fonction de l'utilisateur (page qui donne des informations sur son compte, sur sa liste d'amis etc.) donc pas vraiment d'intérêt à être référencée, si seule la page d'accueil et d'information générale sont référencées c'est suffisant ... mais bon faudra pas que je mette de session sur ces pages alors :(

et donc je risque de me les faire spammer :ouch:

m4estr0
m4estr0
Niveau 9
28 juin 2010 à 17:51:56

Ne sois pas si parano. Pourquoi crois tu que tu vas te faire spammer ?

Au pire:
- tu utilises une BDD au lieu de sessions (tu compares les timestamp des IP, en excluant le contrôle de celle de Google/Yahoo/Bing pour les laisser bosser sur ton site tranquillement).
- tu regardes régulièrement tes logs et tu bloques les IP manuellement.

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 18:08:38

ça veut dire que vos sites ne sont pas protégés contre le spam :ouch:

m4estr0
m4estr0
Niveau 9
28 juin 2010 à 19:09:45

Non, ca veut dire que mes sites ne sont pas sujet au spam.

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 20:41:51

bon j'ai trouvé une solution 'alternative' en y réfléchissant bien.

je vais enregistrer l'ip + timestamp du spammeur présumé (celui qui cliquerai comme un ravagé pour recharger la page d'activation du compte nouvellement créé afin de mettre down le serveur).

dans un fichier "activation.txt",
première ligne : son ip
deuxième ligne : le timestamp

ensuite, à chaque chargement de la page, je vérifie dans le fichier si l'ip enregistrée correspond à $_SERVER['REMOTE_ADDR'], si c'est le cas et que le timestamp enregistré dans le fichier + 5 secondes est supérieur à time(), alors j'arrête le chargement de la page avec un "die()".

J'enregistre ensuite dans le fichier une ligne d'espaces par dessus l'ancienne ip et timestamp pour les effacer, puis le nouvel ip et nouveau timestamp.

Bon, si quelqu'un d'autre recharge la même page entre temps ça enregistrera son ip + timestamp à lui, mais si le spammeur utilise un logiciel ou clic comme un fou alors il y a peu de chance pour qu'un autre client clique entre temps, surtout pour la page d'activation, à moins que plein de gens active leur compte en même temps, donc ça lui cassera quand même son spam.

Pour la page d'accueil ce sera moins efficace car elle sera plus souvent sollicité par des clients différents.

voilà le code en question :

<?php
$activ = fopen('activation.txt', 'r');
$ipactiv = fgets($activ);
$timeactiv = fgets($activ);
fclose($activ);

$a = "\r\n";
$ip = $_SERVER['REMOTE_ADDR'].$a;

if (($ip === $ipactiv) and (time() < ($timeactiv + 5)))
{
die("<p>Vous avez déjà chargé la page il y a moins de 5 secondes</p><p><a href=index.php>retour</a></p>");
}

// attention, sous linux c'est "\n" seulement et pas "\r\n" et le "\r\n" rajoute 2 caractères invisibles à la fin de la 1ère ligne dans le fichier !

$activ = fopen('activation.txt', 'r+');
fseek($activ, 0);
fputs($activ, $_SERVER['REMOTE_ADDR']);
fputs($activ, "\r\n");
fputs($activ, time());
fclose($activ);

?>

deepblue
deepblue
Niveau 16
28 juin 2010 à 21:10:02

Il ne mettra pas le serveur down en "refreshant" comme un sauvage. Il ne faut pas oublier que tu as un serveur web derrière qui est un minimum concerné par le "requêtage" http des clients. Je crois que tu juges mal les interventions à faire sur ton site web. D'une part, l'utilisation de fichier pour faire ça, surtout comme tu l'as fait n'est pas forcément optimisé et tu as désigné un des problèmes majeur : l'accès au fichier si deux clients arrivent "en même temps".
Je suis d'accord avec les propositions de m4estr0. J'ai mon serveur web (aussi "minable" qu'il l'est) et j'ai encore été sujet à un flood hier sur le wall : Quelques posts par seconde pendant quelques minutes. Pas de ralentissement (j'avais le nez dans les logs pour m'en rendre compte) et pourtant le bot floodait comme un porc.
Tu te prends bien la tête pour finalement ajouter une couche d'erreurs.

xZecko
xZecko
Niveau 4
28 juin 2010 à 21:13:39

HS : si tu ne veux pas t'embêter avec les sauts de lignes différents sous Windows & Linux tu as la constante PHP_EOL. :-)))

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 21:30:35

ok merci !

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 21:35:52

je rencontre en petit problème en essayant de recopier le code sur une autre page avec un autre fichier, apparemment j'ai pas les droits en écriture malgré que j'ai mis "r+"

Warning: fseek(): 3 is not a valid stream resource in C:\wamp\www\site\enregistrement.php on line 25

24. $activ = fopen('enregistrement.txt', 'r+');
25. fseek($enreg, 0);
26. fputs($enreg, $_SERVER['REMOTE_ADDR']);
27. fputs($enreg, "\r\n");
28. fputs($enreg, time());
29. fclose($enreg);

pourtant la case "lecture seule" n'est pas cochée sur le fichier "enregistrement.txt" :(

Pseudo supprimé
Pseudo supprimé 28 juin 2010 à 21:52:10

non en fait c'est bon, c'était $enreg qu'il fallait à la ligne 24 :honte:

m4estr0
m4estr0
Niveau 9
29 juin 2010 à 00:55:25
  1. ce serait assez laborieux, et finalement je me demande si ça prendrait pas plus de #ressource qu'un spam

Presque ... tu risques de te spammer toi même en cas de gros trafic. Imagine 10 visiteurs uniques en ligne. Un chargement de page toutes les 10 secondes. Donc 60 requêtes minutes.
60*60*24*30 = 2.6 millions de requêtes par mois rien que pour ton système anti-spam ... ouch >_<.

(il est tard, je suis pas sûr de mes calculs xD)

Pseudo supprimé
Pseudo supprimé 29 juin 2010 à 01:09:19
  1. 2.6 millions de requêtes par mois rien que pour ton système anti-spam

:d) C'est pour ça que je préfère encore l'ouverture/lecture/écriture/fermeture d'un fichier qu'un système de requêtes SQL, mais c'est surtout pour arrêter le chargement d'une page qui mènerait à faire une requête SQL, donc arrêter le chargement de la page avant qu'elle ait effectué la ou les requêtes.

Mais j'ai trouvé aussi un système intermédiaire :
par exemple ma page d'accueil affiche le nombre d'inscrit sur le site grâce à une requête COUNT qui compte le nombre de comptes dans la base de données, je voudrais pas qu'un spammeur qui "refresh" sans arrêt provoque des centaines de requêtes COUNT sur toute la table...

Donc j'ai mis le résultat du nombre d'inscrits dans un fichier avec le timestamp de la dernière requête COUNT ayant permis d'obtenir ce nombre, et toutes les dix minutes il est mis à jour, donc si un malin recharge la page sans arrêt ça affichera le résultat contenu dans le fichier, et au bout de 10 minutes seulement, quand le timstamp contenu dans le fichier sera devenu inférieur de 600 secondes au time() actuel alors la requête met à jour le fichier contenant le nombre d'inscrits.

deepblue
deepblue
Niveau 16
29 juin 2010 à 02:33:42

On appel ça le cache :-)

deepblue
deepblue
Niveau 16
29 juin 2010 à 02:46:43

(qui plus est, une vraie solution)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment