un "notice" à effacer

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 : un "notice" à effacer

Re: un "notice" à effacer

par diabless6 » 08 mars 2010, 14:23

t'as bien compris le truc pour le coup des variables local
& global
pas de & local
C'est juste une subtilité de plus... :wink:

Vu sous cette angle, je pige ce qu'est le passage par référence à une autre variable.
Rooo, tu es arrivée à me faire douter. Pas glop.
Ha bon ! ça t'arrive aussi :mrgreen:
Au passage, le sujet déborde. Il aurait fallu peut être ouvrir un sujet approprié. Là, on est un peu loin du notice de départ.
Oui, c'est pourquoi, je le clos. Il est résolu sinon je vais me faire taper sur les doigts... :mrgreen:

Merci à vous :wink:

Re: un "notice" à effacer

par stealth35 » 08 mars 2010, 14:16

t'as bien compris le truc pour le coup des variables local
& global
pas de & local

Re: un "notice" à effacer

par niuxe » 08 mars 2010, 13:41

Et l'eau,
C'est égale à 3. Donc je ne vois pas la différence. Ensuite, que je mette une éperluette ou pas à mon erreur, il me dit toujours la même chose. Je comprends pas trop le rapport #-o
Rooo, tu es arrivée à me faire douter. Pas glop.

fichier1.php
<?php
    $a = 1;
    $b = &$a;
   
    $a = 3;
   
    echo $b;
   
?>
fichier2.php
<?php
    $a = 1;
    $b = $a;
   
    $a = 3;
   
    echo $b; 
   
?>
Tu n'auras pas le même résultat :
fichier 1 : b = 3
fichier 2 : b = 1 puisque B est déclarée à la ligne 1 et est une variable simple non pas une référence.

dans le fichier 1 : si A est égale à une valeur partout dans le script, b aura la même référence (valeur). Ils vont travailler de concert. Tu n'as plus une variable avec une valeur, mais deux variables avec la même valeur !
<?php
	$a = 1;
	$b = &$a;
   
	$a = 3;
	$a = 10;
	$a = 22 + 10; //32
	$a += $a; // 64
   
	echo $b; // 64 puisque B est la référence de a 

?>
<?php
	$a = 1;
	$b = &$a;
   
	$a = 3;
	$a = 10;
	$a = 22 + 10; //32
	$a += $a; // 64
	
	$b++;  
	echo $b; // 65 
	echo $a; // 65

?>
Stealth : avoue que ton code est plutôt chaud à lire aux premiers abords. Enfin pour moi, quand je vois ce genre de chose, j'ai les cheveux qui se dressent à la tokio hotel ou à la Désirelless :lol: (the cure aussi c'est pas mal). Cependant ton exemple est bon aussi. Mais là on peut confondre avec les variables locales d'une fonction. ^^

Au passage, le sujet déborde. Il aurait fallu peut être ouvrir un sujet approprié. Là, on est un peu loin du notice de départ.

bon code ^^

Re: un "notice" à effacer

par stealth35 » 08 mars 2010, 11:48

le & c'est la référence
http://www.php.net/manual/fr/language.references.php

exemple :
// sans référence

$a = 3;

function test($a)
{
   $a = 5;
   echo $a //5
}

echo $a //3

// avec référence

$a = 3;

function test(&$a)
{
   $a = 5;
   echo $a //5
}

echo $a //5

Re: un "notice" à effacer

par diabless6 » 08 mars 2010, 11:02

Que ce soit comme écrit en au-dessus ou :
<?php
    $a = 1;
    $b = $a;
   
    $a = 3;
   
    echo $b;
   
?>
C'est égale à 3. Donc je ne vois pas la différence. Ensuite, que je mette une éperluette ou pas à mon erreur, il me dit toujours la même chose. Je comprends pas trop le rapport #-o

Re: un "notice" à effacer

par niuxe » 08 mars 2010, 05:21

Bien en gros, il faut enlever le caractère & avant ta variable car cela à une signification bien particulière pour php.
c'est tout :wink:
exact

pour faire simple :
<?php
    $a = 1;
    $b = &$a;
    
    $a = 3;
    
    echo $b;
    
?>
;)

sinon il y a un autre truc démentielle : la variable variable :shock:
<?php
    $affichage = "cheuveux";
    
    $cheuveux = "blond";
    $aspect = "gros";
    $signeDistinctif = "lunettes";
    
    
    echo ${$affichage}; 
?>
C'est intéressant quand il y a beaucoup de if sur if et elseif et encore des elseif avec 500 données à contrôler. ;)

@ plus

Re: un "notice" à effacer

par Dr@ke » 07 mars 2010, 22:54

Bien en gros, il faut enlever le caractère & avant ta variable car cela à une signification bien particulière pour php.
c'est tout :wink:

Re: un "notice" à effacer

par diabless6 » 07 mars 2010, 22:29

Je ne saisie pas très bien ces passages par références ou non :roll:

Re: un "notice" à effacer

par Dr@ke » 07 mars 2010, 20:41

Pas ça que je dis :wink:
Pourquoi tu mets un & avant la variable?

http://www.php.net/manual/fr/language.r ... s.pass.php

Sinon:
if (in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
    echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';exit();
} 
Ce n'est pas correct car cela fait l'effet inverse, car tu as oublié de mettre un ! (négatif) avant in_array()
Donc:
if (!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
    echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';exit();
} 
in_array() Retourne TRUE si un élément est trouvé dans le tableau, FALSE sinon

Re: un "notice" à effacer

par diabless6 » 07 mars 2010, 20:38

&$_FILES ?
j'avais déjà essayer ça, mais non :

Deprecated: Call-time pass-by-reference has been deprecated in C:\UwAmp\www\Php\9formulaires3.php on line 44

Re: un "notice" à effacer

par Dr@ke » 07 mars 2010, 20:25

&$_FILES ?

Re: un "notice" à effacer

par diabless6 » 07 mars 2010, 20:17

Oui c'est sûr, il faut prévoir plein de protection notamment avec les bots par exemple. Mais avant trop me fixer sur la sécurité faudrait que je sache bien coder avant tout !

Je viens de tomber sur un os :
<?php

if( !empty($_FILES))
{
define('TAILLE_MAX',100000);
if ($_FILES['fich']['size'][0] >= TAILLE_MAX)
{
     echo 'Le fichier est trop gros...';exit();
}    
$extensions = array('txt','png', 'gif', 'jpg', 'jpeg');
$extension = end(explode('.', &$_FILES['fich']['name'][0]));  (ligne 44)
if (in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
    echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';exit();
}    
Bon le code n'est pas joli, mais moi j'expérimente, c'est tout ce qui m'intéresse. Le tout c'est que ça marche et que je comprenne, ce qui est moins évident.

j'ai ce message: Strict Standards: Only variables should be passed by reference in C:\UwAmp\www\Php\9formulaires3.php on line 44

"Seulement les variables doivent être passées par référence" #-o I don't understand it :roll:

Re: un "notice" à effacer

par Dr@ke » 07 mars 2010, 20:09

Je suis d'accord aussi :wink:

Re: un "notice" à effacer

par niuxe » 07 mars 2010, 19:30

Hello Dr@ke,
Bien tu simplifies, ne te fixe pas sur 50 codes différents, base toi sur le tiens, et ajoute simplement de nouvelles vérifications.
Dans l'absolue, je suis tout à fait de ton avis. Cependant, il est tout à fait intéressant de regarder/lire des techniques adjacentes. Là, dans ce cas là, la curiosité est bon signe, n'est ce pas ?

exemple :
$monTableau = array("orange","citron","banane");

echo implode(" - ",$monTableau);

// ou 
for($i = 0,$nb = count($monTableau) ; $i < $nb ; $i++)
	echo $monTableau[$i]." - ";

// ou etc.

Re: un "notice" à effacer

par Dr@ke » 07 mars 2010, 19:28

Exact :wink:
Un bon captcha est toujours bien pratique dans un formulaire.

Tu peux aussi enregistrer dans une bd l'ip de la personne qui upload, ensuite tu incrémentes à chaque nouvel upload, puis au dessus d'un certain nombres en un temps déterminé -> tu refuses...

Tu peux aussi vérifier l'espace disponible restant dans le dossier upload...