jackbocar

  • Site web
  • Nombre de sujets
    152
  • Nombre de messages
    456
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

jackbocar
le 01/01/2008 à 18:02
file_exists
Bonjour,

Sur un tableau comme celui-ci qui gère mes pages dans chacun de mes répertoires, peut-on y ajouter une sécurité du genre "file_exists".
Si oui, comment réécrire ce tableau ?

<?php
$page = (isset($_GET['page']) && $_GET['page'] != '') ? $_GET['page'] : 'home';
$allowedPages = array('home','page_1','page_2','page_3','page_4','page_5');
if (in_array($page, $allowedPages)) {
include $page . '.php';
} else {
?>
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="10"><tr><td align="center"><strong>
Error : The Page You're Looking For Doesn't Exist <br /><br />
Erreur : La Page que Vous Cherchez N'existe pas !</strong></td></tr></table>
<a href="index.php?page=home" class="Lnav" title="Retour" />Home</a>
<?php
}
?>


Si c'est non, avez-vous un autre moyen de sécuriser plusieurs fichiers avec un seul "index.php" par répertoire, et une adresse : http://www.templiers.net/accusateurs/index.php?page=philippe-le-bel

Merci de votre aide

Jack Bocar
jackbocar
le 20/10/2007 à 17:27
Fonction str_replace
Bonjour,

Merci de ta réponse.

Mais, ce que j'aimerai que l'on me dise ou que l'on me donne une hiérarchie conventionnelle qui serait :

1 – Lorsque tu inserts avec un formulaire qu'elle protections conventionnelles doit-ont placé devant : $_POST['nouvelle'] ?
Pour que dans la table, les é, à, è ne se transforment pas par des ?

1 – Lorsque tu lis la nouvelle, quelle protections doit-ont placé devant : $obj->nouvelle ?

Mes pages sont codées en ce moment avec : charset=iso-8859-1 ainsi que mes tables.

Je sais qu'il faudrait que je me serve de charset=utf-8, mais dans le cas d'insertion, mes caractères accentués se transforment dans la table par des ?

Alors, que dois-je faire pour travailler avec des encodages charset=utf-8 tables et pages ?

Pour mon cas personnel, je travail avec PHP5 et MYSLI, j'ai donc comme protection sur mes ouvrages pour insérer : mysqli_real_escape_string( $_POST['nouvelle']), il n'est pas spécifié de type d'encodage pour les charsets le la table.

Pour ne pas avoir de problèmes de lectures, il faut que je protège avec quoi pour ceci : $obj->nouvelle ?

Merci de ta réponse, mais fais moi SVP un exemple pour travailler avec l'encodage charset=utf-8.

Jack Bocar
jackbocar
le 19/10/2007 à 09:14
Fonction str_replace
Bonjour,

Cette fonction, je la connais, mais lorsque je l'utilise, la fonction nl2br(), ne fonctionne plus.

Pour mes besoins, je veux pouvoir envoyer mes textes dans ma table avec les é, à ç, ù, ô etc.

Je ne veux pas que les lettres accentuées ne se transforme par des ?

J'insert dans la table en ISO, et je lis en ISO, mais pour les autres, si des lecteurs étrangers qui fonctionnent avec des navigateurs paramétrés différemment du mien, je ne veux pas nom plus qu'ils voient dès qu'ils ouvrent la page des ?.

C'est pour cette raison que je change les caractères accentués et seulement ces caractères en code HTML.

Si tu as une méthode pour faire fonctionner htmlentities() sans que nl2br() ou les <a href="">, ne soit de ce fait utilisables, dis-moi clairement de quelle manière dois-je faire.

Et pas il existe cette fonction, oui, elle existe, mais elle perturbe ceci ou cela.

Alors, comment dois-je faire ?

Pour mémoire, je ne protège aucunes données à l'insertion dans mes tables, je ne sais pas ce qui est le mieux pour moi et surtout, ne pas rencontrer de problèmes.

Avec ISO, j'utilisais :

Insertion
mysql_escape_string($_POST[])

Lecture
nl2br(htmlentities(trim($data)

Mais, j'ai des problèmes cités plus haut

Jack Bocar



Merci LupusMic
pour le code plus élégant

Jack Bocar
jackbocar
le 18/10/2007 à 16:12
Fonction str_replace
Bonjour,

Les fonctions : str_replace, peut-on les utiliser sous cette forme sans causer de pertes de données, ou ralentir les systèmes ?


<?php
function caracteres($chaine){
$chaine = str_replace('à','&agrave;;',$chaine);
$chaine = str_replace('é','&eacute;',$chaine);
$chaine = str_replace('è','&egrave;',$chaine);
$chaine = str_replace('ê','&ecirc;',$chaine);
$chaine = str_replace('ç','&ccedil;',$chaine);
$chaine = str_replace('ï','&iuml;',$chaine);
$chaine = str_replace('î','&icirc;',$chaine);
$chaine = str_replace('Î','&Icirc;',$chaine);
$chaine = str_replace('ô','&ocirc;',$chaine);
$chaine = str_replace('ù','&ugrave;',$chaine);
$chaine = str_replace('û','&ucirc;',$chaine);
return $chaine;
}

?>



Ces fonctions pour remplacer les mots accentués après avoir été extrait de la table fonctionnent parfaitement bien en local.

Jack Bocar
jackbocar
le 12/10/2007 à 19:39
Problème d'accent entre ma base de donnée et navigateur
Bonjour,

Et bien moi, j'aimerai que l'on m'explique comment lorsque l'on utilise des accents et que l'on insert dans la table : Comment doit être le choix du CHARSET par défaut ?

Quels échappements de caractères faut-ils utiliser ?

Si l'on utilise le charset=utf-8 dans la table, les caractères spéciaux devienne des ?

Si l'on utilise un CHARSET LATIN dans la table : il nous faut utiliser : charset=iso-8859-1 dans la page HTML. Et pour les pages lues par des étranger avec un : charset=utf-8 que se passent-ils pour eux ?

Alors, j'aimerai que les aficionados des sites Internet, nous fassent un petit lexique clair et utilisable par tous le monde y compris par les vrais débutants et les BOURINS comme je l'ai lu.

Dans mon cas, comme je ne sais pas vraiment ce qu'il faut faire, je change tous mes caractères accentués par des caractères spéciaux HTML pour insérer dans mes tables.

Jack Bocar
jackbocar
le 11/10/2007 à 19:40
Sécurité de base pour un site
Bonjour,

Je réponds à vos solutions : j'ai remis les protections des données telles qu'elles me sont proposées sur mon ouvrage.

J'ai le résultat en bas de page tel qu'il s'affiche à l'écran.

Que dois-je enlever dans la protection ?
Ou remplacer et par quoi ?
Ou changer quoi ?



Mon code d'insertion :
<?php
if (isset($_POST['titre']) && isset($_POST['news'])) {
if ($db = @mysqli_connect('localhost', 'jackbocar', 'xxxxxxx')) {
require_once 'stripFormSlashes.inc.php';
mysqli_select_db($db, 'xxxxxxxx');
mysqli_query($db, sprintf( 'INSERT INTO my_news (titre, news) VALUES (\'%s\', \'%s\')',
mysqli_real_escape_string($db, $_POST['titre']),
mysqli_real_escape_string($db, $_POST['news'])));
echo 'Entrée sauvée.';
mysqli_close($db);
} else {
echo 'Pas de Connexion.';
}
}
?>


La protection des données appellée avec require_once

<?php
function stripFormSlashes($arr) {
if (!is_array($arr)) {
return stripslashes($arr);
} else {
return array_map('stripFormSlashes', $arr);
}
}

if (get_magic_quotes_gpc()) {
$_GET = stripFormSlashes($_GET);
$_POST = stripFormSlashes($_POST);
}
?>


Mon formulaire :

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Titre : <input type="text" name="titre" /><br />
<textarea name="news" cols="50" rows="10"></textarea>
<input type="submit" value="Save" />
</form>

Lecture des données :
<?php
if ($db = @mysqli_connect('localhost', 'jackbocar', 'xxxxxxx')) {
mysqli_select_db($db, 'xxxxxxx');
$result = mysqli_query($db, 'SELECT * FROM my_news');
while ($row = mysqli_fetch_object($result)) {
printf('<table border="0" cellpadding="0" cellspacing="0" width="800"><tr valign="top"><td width="100">%s</td><td width="600">%s</td></tr></table><table border="0" cellpadding="0" cellspacing="0" width="800"><tr valign="top"><td>%s</td></tr></table><br />',
htmlspecialchars($row->id),
htmlspecialchars($row->titre),
htmlspecialchars(nl2br($row->news))
);
}
mysqli_close($db);
} else {
echo '<b>Connection failed.</b>';
}
?>


Le résultat tel qu'il apparaît à l'écran :

1 Test news 1
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.<br />

2 Test news 2
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /><br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br ><br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.

3 Test news 3
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /><br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br ><br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.

Merci de vos réponses et de votre aide.

Jack Bocar
jackbocar
le 06/10/2007 à 15:26
Script compteur de pages
La différence avec le mien est tout de même, que le mien calcul chaque clique d'un index.php dans chaque rubrique.

Ensuite, tu peux faire des statistiques sur les pages les plus vues, le nombre total des hits sur l'ensemble du site, Exemple :

Ma page de statistique :

[Home Page] [Page 01] [Page 02] [Page 03] [Page 04] [Page 05] [Statistiques]

Ci-dessous se trouve les statistiques du site

Rang Page Nombre de hits
1 Home page 52
2 Troisième page 12
3 Cinquième page 12
4 Deuxième page 11
5 Première 10
6 Quatrième page 10
Total 107


J'avoue tout de même qu'au point de vue programmation, ton script est de la programmation pure et dure comme je n'en ai jamais fait.

N'oublie pas que je suis un autodidacte, et que tous ce que je connais c'est sur les sites de PHP que je l'ai appri et particulièrement celui du PHPfacile et ce que j'ai appris et apprends encore est dans des livres sur le PHP.

Exemple : Introduction à PHP5 O'Reilly
PHP à 200% O'Reilly
PHP5 le guide complet Micro Application
PHP5 et Mysql 5 CampusPress
Sur aucun de mes ouvrages, il y a un code aussi long avec des fonctions codées.

Les seules fonctions sont en HTML, à la place d'un include, on met do_html_top, ou do_html_footer, do_html_menu etc...

L'avantage est que tout le code HTML est installé sur une page et que tu fais appel à ce code via cette page.

Et pour tous les autres codes comme les compteurs d'index de rubrique idem.

Exemple :

<?php
function display_compteur_home()
{
updateCompteurs("page01");
echo "La ".getNom("page01")." du site &agrave; &eacute;t&eacute; visit&eacute;e <strong class=R>".getCompteurs("page01")."</strong> fois";
include (PATH_INCLUDE.'/_require/nombre_online.php');
}

function display_compteur_accusateurs()
{
updateCompteurs("page025");
echo "La page des ".getNom("page025")." &agrave; &eacute;t&eacute; visit&eacute;e <strong class=R>".getCompteurs("page025")."</strong> fois";
include (PATH_INCLUDE.'/_require/nombre_online.php');
}
?>


Jack Bocar
jackbocar
le 06/10/2007 à 14:59
Script compteur de pages
Bonjour LupusMic,

Avec ces Rectifications, ça fonctionne.

<?php
$dbcon = new mysqli('localhost', 'jackbocar', 'password', 'test');
Counter::connect($dbcon);

//echo "Le site fut frappés". Counter::sum()." fois !" ;

$counter = Counter::get(__FILE__);
//$counter->nbhits();

//echo "Le site fut cliqué". $counter->hits." fois !" ;
echo "Le nombre total est de ". Counter::sum()." pages vues !";
?>


En fait ce compteur additionne les cliques des différentes pages.

Comme un script de statistique des clics total du site.

Jack Bocar
jackbocar
le 06/10/2007 à 09:42
Script compteur de pages
Bonjour,

Merci pour ce code, il est bien trop professionnel pour moi, je suis incapable de faire les modifications des erreurs, je ne le comprends pas.

Désolé.

Fatal error: Cannot redefine class constant Counter::FETCH in F:\www\www.test-net\test-compteur.php on line 6

const FETCH = "select sum(nbHit) as sum from compteurs" ;

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in F:\www\www.test-net\test-compteur.php on line 56

static public connect(mysqli $con)
{
self::$con = $con ;
}


Jack Bocar
jackbocar
le 05/10/2007 à 18:42
Sécurité de base pour un site
Bonjour,

Je sais que j'ai fait des erreurs sur mes premiers pas en PHP5, en passant d'un livre à l'autre, d'une façon de codé à une autre.

Puis, j'ai enlevé les mysqli_real_escape_string et tous les autres que j'avais mis. Depuis, plus aucun problème.

Mais, comme je l'ai dit au-dessus, je suis le seul à insérer et à modifier. Faut-il tout de même que je protège mes scripts ?


Dis-moi, quelle protection tu materais sur ce script :

<?php
include ('../_require/db_membres.php');
$conn = db_connect();
if (isset($_GET['go']) && $_GET['go'] == 'ok') {
if (!empty($_POST['titre']) && !empty($_POST['news'])) {

$result = $conn->query('INSERT INTO ma_table VALUES("", "'.$_POST['titre'].'", "'.$_POST['news'].'")');
header('Location: index.php');
exit();

}
else {
$message = 'Au moins un des champs obligatoires est vide.';
}
}
if (isset($_POST['titre'])) $_POST['titre'] = $_POST['titre'];
if (isset($_POST['news'])) $_POST['news'] = $_POST['news'];
?>


<?php
if (isset($message)) {
echo '<br /><span class="R">'.$message.'</span>';
}
?>



Mon script d'affichage :
<?php
$conn = db_connect();
$result = $conn->query("SELECT id, titre, news FROM ma_table WHERE id='1'");
while ($obj = $result->fetch_object()) {

printf ('<h2>%s</h2> %s', $obj->titre, nl2br($obj->news));
}
$result->close();
$conn->close();
?>


Merci

Jack Bocar
LoadingChargement en cours