PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

Merci Maljuna Kris, je teste touours avec des étoiles et puis de fini avec les variables, mais comme je suis tête en l'air, une piqure de rappel fait toujours du bien wink

#2 Re : Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

Vraiment merci d'avoir pris le temps pour toutes ces explications big_smile Je corrige immédiatement.

#3 Re : Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

Merci beaucoup pour ces explications. J'avais entre midi et deux intval, mais je ne voyais pas trop la différence. Maintenant effectivement, ça simplifie les choses.

Je vais devoir revoir toutes mes pages car je pense que je me suis laché sur les addslash pour les ids hmm

Pourrais tu me dire la différence entre :


    if(intval($val['valid'])===1){...

 

et


    if(intval($val['valid'])==1){...

 

J'ai testé les deux, et cela fonctionne, mais c'est la 1er fois que je vois ===

#4 Re : Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

Bon, j'avance, j'ai rajouté des '


$Requete_SQL2 = "SELECT * FROM commentaire WHERE valid = '1' AND id_produit = '$id_produit' ORDER BY date DESC ";
 

Je n'ai plus de message d'erreur, mais les commentaires ne s'affichent pas.

#5 Re : Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

J'ai oublié de rajouté l'erreur ...


Erreur de Sélection dans la base : SELECT * FROM commentaire WHERE valid = '1' AND id_produit = 2602\' ORDER BY date DESC

PS : je ferais la guerre aux étoiles wink

#6 Forum Général PHP » Eviter les injections, mais j'ai une erreur ... » 16-04-2012 16:02:36

theavengers
Réponses : 8

Bonjour à tous,

j'affiche des fiches produits, tout se passe bien puisque si je rajoute un ' ou un ", le résultat s'affiche quand même.
Mais j'ai voulu rajouter un script pour poser des commentaires, et à l'affichage, cette fois, si je rajoute un ' ou ", la fiche produit s'affiche mais j'ai une erreur sur les commentaires, je vois pas du tout quoi faire.


require_once("admin/connexion.php");
$BD_link = mysql_connect("${'BD_host'}${'BD_port'}", $BD_login, $BD_pass) or die("Connexion de la base impossible : ". mysql_error());
mysql_select_db($BD_base, $BD_link) or die("Sélection de la base impossible : ". mysql_error());
//


$_GET['id_produit'] = addslashes ($_GET['id_produit']);

$Requete_SQL2 = "SELECT * FROM commentaire WHERE valid = '1' AND id_produit = $id_produit ORDER BY date DESC ";
mysql_real_escape_string($id_adresse);

$result = mysql_query($Requete_SQL2) or die("Erreur de Sélection dans la base : ". $Requete_SQL2 .'<br />'. mysql_error());
error_reporting(55);  

// creation et affichage de la table
while($val=mysql_fetch_array($result))
if($val["valid"] == 1)
{
$date=$val[date];
$login=$val[login];
$com_pos=$val[com_pos];
$com_neg=$val[com_neg];

echo "<span class=\"texteavis\">Avis : </span><span class=\"textenormal\">";
echo stripslashes($com_pos);

 

#7 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

Merci JC d'avoir pris le temps de me mettre les points sur les "i" wink

PS : j'archive régulièrement, surtout depuis que j'ai passé une matinée au commissariat pour une annonce frauduleuse pour laquelle il à fallu que je donne une copie de la bdd.

#8 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35


mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT mesvariables FROM matable WHERE id='".$_GET['id']."' AND valid = 1 ");
mysql_real_escape_string($id);
if ($row=mysql_fetch_array($result)) {
echo '<title>annonce ',$row['titre'],'  site</title>';
} else {
header("Location: ../404.htm");
}  
mysql_close();
?>
 

J'ai testé avec exit et si id existe, j'ai une page blanche ... mais en écrivant ces lignes je viens de comprendre que le exit devrait être dans la condition else si je ne me trompe pas.
C'est fou, chaque fois que je viens ici, j'apprends un peu plus (je ne suis pas un élève assidu et ça se voit...) mais je comprends mieux en expliquant le problème.


mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT mesvariables FROM matable WHERE id='".$_GET['id']."' AND valid = 1 ");
mysql_real_escape_string($id);
if ($row=mysql_fetch_array($result)) {
echo '<title>annonce ',$row['titre'],'  site</title>';
} else {
header("Location: ../404.htm");
exit;
}  
mysql_close();
?>
 

Est-ce que ça vous parait correct ?

#9 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

Maljuna Kris merci pour ces précisions. Je vais de ce pas modifier mon code,  et revoir la docs php sur le header. Comme tu l'as dit, ça se voit que j'ai du mal big_smile

#10 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

Merci JC, j'ai déjà effectivement une redirection 404 en htaccess.
Donc si je comprends bien, il me suffit de mettre


    } else {
    header("Location: ../mapage404.php");
    }  mysql_close();
    ?>
 

J'ai du mal à comprendre le header, je suis allez sur le  Manuel php mais je m'embrouille.

#11 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

Hello, merci de ta réponse, mais malheureusement, ce n'est pas dynamique à moins que je me trompe.


Mon code ci-dessus renvoi sur ma page 404... mais est toujours considéré comme une erreur par google ... je cherche encore ^^
Le principe que j'ai trouvé sur le net serais ça :


$id = $_GET["id"];
if ((!$id) || (!ereg("^[0-9]+$", $id))) exit404();
function exit404() {
  global $_SERVER;
  header ("HTTP/1.1 404 Not Found");
  include ($_SERVER["DOCUMENT_ROOT"] . "/erreur404.php");
  exit();
}
 

Mais je n'ai pas encore testé, je galère pour l'adapter n'utilisant pas encore les fonctions.

#12 Re : Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

J'avance dans mes recherches avec un dernier code trouvé


header("HTTP/1.1 404 Not Found");
echo file_get_contents("lapage404.php");
exit;
 

#13 Forum Général PHP » Activer une erreur 404 si l'ID est n'existe plus. » 29-03-2012 16:01:35

theavengers
Réponses : 10

Bonjour à tous,

en regardant webmaster tool ce matin, je m'aperçois que j'ai un soucis de 404 manquante...

En fait j'ai des annonces sous cette forme :
http://www.monsite.com/mondossier/monan … hp?id=1112

Mais si une personne supprime cette annonce, l'url est encore bonne (je le pensais :D) puisque je mettais :

 <?php
$_GET['id'] = addslashes ($_GET['id']);

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM matable WHERE id='".$_GET['id']."' AND valid = 1 ");
mysql_real_escape_string($id);

if ($row=mysql_fetch_array($result)) {
   echo $row["titre"];

} else {
   echo "annonce disparu";
}  mysql_close();
?>

Pareil pour le contenu avec un message, mais google n'apprecie pas.

Donc ma question ,c'est comment renvoyer ou indiquer une 404 si mon "$id" n'existe pas ?

J'ai vu pour l'instant cela :

header("HTTP/1.0 404 Not Found");

Mais j'ai du mal à comprendre le principe... et à l'écrire. Dois je faire un truc dans le genre :


} else {
header("Location: index.php?p=404");  [b]OU header("HTTP/1.0 404 Not Found");[/b]
}  mysql_close();
?>
 

Merci à ceux qui pourront m'éclairer.

PS : je dois finir la guerre des étoiles ;)

#14 Re : Forum Général PHP » Update de 100 entrée dans une base de façon aléatoire ? » 01-03-2012 22:52:02

Roww, merci, j'avais pas du tout pensé à utiliser une autre table, je vais voir cela.

#15 Forum Général PHP » Update de 100 entrée dans une base de façon aléatoire ? » 01-03-2012 22:52:02

theavengers
Réponses : 8

Bonjour à tous,

je viens de finir de gérer une base avec 9000 entrée, et je me pose une question technique.

Comment je peux faire pour transcrire cela :

UPDATE matable SET valid = 1 WHERE valid = 0 ;

De façon à ce que seulement une centaine d'entrée soit passé à 1 mais de façon aléatoire. Fonction RAND() ?

Merci d'avance.

#16 Re : Forum Général PHP » Enlever les espaces dans un upload de plusieurs fichier » 20-09-2011 08:17:33

Merci JC, je n'ai pas tout compris, mais je cours voir le topic qui effectivement à des mesures de sécurité que je n'ai pas mis en place. wink

#17 Forum Général PHP » Enlever les espaces dans un upload de plusieurs fichier » 20-09-2011 08:17:33

theavengers
Réponses : 3

Hello à tous,

en fait, c'est juste pour une vérification de mon code, voir si il n'y à pas mieux, plus simple, ou si je n'ai pas commis d'erreur sur le preg_replace, j'ai vu d'ailleurs que certains utile str_replace.

$addedFiles = array();
      $i = "1";
          foreach ($_FILES as $name => $file)
          {
              if (is_uploaded_file($file['tmp_name']))
              {
              //remplacer espaces par des tirets
              $modele = preg_replace('/([^.a-z0-9]+)/i', '-', $modele);
              echo "$modele";
               // renomme le fichier sur le serveur
               copy($file['tmp_name'], "../photo/${marque}-${modele}-${annee}-${i}.jpg" );
              $addedFiles[$name] = mysql_real_escape_string("${marque}-${modele}-${annee}-${i}.jpg" );
              $i++;
              }
           }
           $query = "
   
    INSERT INTO

Je confirme que ça marche, mais au cas ou, je prefere demander

#18 Re : Forum Général PHP » Faire un tri par date, choix des variables ? » 01-06-2011 12:31:06

J'ai un cours personnel sur l'utilisation de TIMESTAMP et CURRENT_TIMESTAMP, c'est génial big_smile .
Bon ben comme d'habitude, j'imprime la discussion en PDF pour m'en souvenir.

#19 Re : Forum Général PHP » Faire un tri par date, choix des variables ? » 01-06-2011 12:31:06

Rahh, j'avais raté le message de Maljuna Kris. Bon ben redirection le petit manuel pour voir cela wink

#20 Re : Forum Général PHP » Faire un tri par date, choix des variables ? » 01-06-2011 12:31:06

Merci pour ce complément d'info, je n'ai pas arreter de lire, et en sus ,tu m'apportes de nouvelles informations. Je ne savais pas que l'on pouvait remplacer NOW (que j'utilisais constamment)  par la valeur par defaut CURRENT_TIMESTAMP.

Je pense que je m'en suis sorti, mais il me reste un gros nettoyage de code à faire lol

#22 Forum Général PHP » Faire un tri par date, choix des variables ? » 01-06-2011 12:31:06

theavengers
Réponses : 13

Bonjour à tous,

j'étais entrain de me faire un petit agenda en PHP. Et une fois que j'ai voulu afficher par mois et jour, je me suis aperçu que je m'y étais pris comme un manche, soyons honnête, il faut le dire. hmm

Donc, du coup, quand je veux faire un tri de la façon suivante, je pleure :

30 juin
18 juin
26 mai
16 mai
01 mai
30 avril
24 avril
12 avril

Je m'étais prévu un champ "date" auto à l'insertion sous la forme Y-M-D.
Et puis j'ai rajouté 3 champs : "jour_debut" , "mois_debut" , "annee_debut" , pour la date de évènements.

Et puis j'ai décidé de lancer mon tri ....

ORDER BY mois_debut DESC, jour_debut DESC

La ou je me retrouve coincé, c'est que j'ai completement zappé que mois_debut n'ai pas une date, puisqu'il contient par ex "avril" et quand je classe ben avril = A > Mai = M

Donc, j'avoue que je bloque. Je suis entrain de penser au champ date tout seul qui va me servir, mais ce matin je suis pas très frais...

#23 Re : Forum Général PHP » securisarion d'une page , contrer intrusion par rajout de ligne ... » 10-03-2011 09:26:44

Est que c'est bon comme ça ?

$_GET['id'] = addslashes ($_GET['id']);


mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM matable WHERE id='".$_GET['id']."' ");
mysql_real_escape_string($id);

Je viens de tester, ça à l'air bon mais je préfère avoir une confirmation... hmm

#24 Re : Forum Général PHP » securisarion d'une page , contrer intrusion par rajout de ligne ... » 10-03-2011 09:26:44

Merci pour le 1er code, je viens de voir que c'était pour les includes tongue Mais merci pour ton code, il me servira tôt ou tard.

Depuis hier, je n'arrête pas de surfer sur les failles PHP et je prends peur ...

Effectivement j'ai vu que mysql_real_escape_string() était le minimum ...

J'en ai profiter pour changer ce bout :

$_GET['id'] = addslashes ($_GET['id']);

#25 Forum Général PHP » securisarion d'une page , contrer intrusion par rajout de ligne ... » 10-03-2011 09:26:44

theavengers
Réponses : 3

Bonjour à tous,

voila mon soucis, une gentille personne s'est introduite sur mon site et ma envoyé des infos sur ma bdd par mail.  J'ai de la chance, je reconnais big_smile

Il m'a simplement mis en évidence le fait de rajouter une ' à la fin de mon URL faisais afficher le début d'info :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/d4d44zfg4389684/web/

En cherchant , j'ai trouvé ça, mais mes connaissances étant très limité, je prefere demander si ça pourrait résoudre mon probleme de faille :

<?php
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))
{
include $_GET['page'].'.php';
}
else
{
include 'accueil.php';
}
?>

Voici ma page :

<?php

// connexion

$id = $_GET["id"];

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM ma table WHERE id='$id'");

//affichage

if ($row=mysql_fetch_array($result)) {
   echo "<input type=hidden name=\"id\" value=$id>\n";


//fin de test


} else {
   echo "Désolé, mais raté";
}  mysql_close();
?>

Je vais corriger les *

Pied de page des forums

Propulsé par FluxBB