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 sujets 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 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 04/10/2007 à 08:25
Script compteur de pages
Bonjour,

Je recherche une bonne idée pour créer un compteur de pages, ce compteur doit calculer le nombre de fois que la page d'index d'une rubrique a été ouverte, à savoir que sur mon site il y a 17 rubriques et entre 10 et 30 pages par rubrique ; Le tout fonctionnant avec une table SQL.

Je me servais d'un script en PHP4, qui bien entendu ne fonctionne plus en PHP5. J'ai essayé sans aucun succès de mètre à jour ce script pour PHP5.

Voir les fonctions du script dans le wall : http://www.lephpfacile.com/wall/wall-473.php

Pour le moment j'ai créé une page avec tous les scripts des compteurs mais le hic, c'est que tous ces compteurs font appel à un fichier .TXT.

C'est à mon avis, un répertoire inutile avec 17 fichiers .TXT à l'intérieur.

Alors, j'attends vos suggestions pour réaliser ce compteur de pages. Des suggestions avec des bouts de codes, que je puisse tester.

Merci

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

Une question qui me taraude depuis assez longtemps, pour ce qui est de la sécurité de base d'un site, il faut :
HTMLENTITE pour insérer dans la table, mais sont-ils vraiment utiles si c'est le webmaster seul qui met à jour le site.

Ce qui veut dire personne autre que lui place des news, des textes ou tout autres, pour les membres, c'est lui qui créait le mot de passe en SH1 et l'envoie au membre.

En fait les membres n'ont que le droit de lire.

Faut-il tout de même sécuriser les script du genre :
<?php
$result = $conn->query("SELECT id, nom, dep FROM table WHERE id='25' ORDER BY nom ASC");
while ($obj = $result->fetch_object()) {
?>


Merci de votre réponse

Jack Bocar
jackbocar
le 02/09/2007 à 15:53
Requêtes les plus efficaces
Bonjour,

J'aimerai savoir sur ces lignes de codes, lesquelles sont les plus efficaces pour afficher une série de départements avec leur nom ?



<h2>D&#233;partements de la r&#233;gion : Franche Comt&eacute; (25 - 39 - 70)</h2>
<?php
$conn = db_connect();
$result = $conn->query("SELECT id, nom, dep FROM commanderies WHERE dep='25' OR dep='39' ORDER BY dep ASC");
while ($obj = $result->fetch_object()) {

printf ('<table border="0" cellpadding="0" cellspacing="0" width="750"class="p"><tr valign="top"><td width="300" align="left" class="style">%s &nbsp; %s</td><td width="300" align="right"><a href="#" class="Lnav" />Top</a></td></tr></table>',$obj->dep, $obj->nom);
}
$result->close();
$conn->close();
?>


La première requête fait appel à tous les départements avec la clause "OR" en énumération.


Les autres sont classiques, une requête par département.

Qui est le plus rapide, et le moins couteux en ressources ?

A savoir qu'il y a des régions avec 6 ou 7 départements !!!

<h2>D&#233;partements de la r&#233;gion : Franche Comt&eacute; (25 - 39 - 70)</h2>

<?php
$conn = db_connect();
$result = $conn->query("SELECT id, nom, dep FROM commanderies WHERE dep='25' ORDER BY dep ASC");
while ($obj = $result->fetch_object()) {

printf ('<table border="0" cellpadding="0" cellspacing="0" width="750"class="p"><tr valign="top"><td width="300" align="left" class="style">%s &nbsp; %s</td><td width="300" align="right"><a href="#" class="Lnav" />Top</a></td></tr></table>',$obj->dep, $obj->nom);
}
$result->close();


$conn = db_connect();
$result = $conn->query("SELECT id, nom, dep FROM commanderies WHERE dep='39' ORDER BY dep ASC");
while ($obj = $result->fetch_object()) {

printf ('<table border="0" cellpadding="0" cellspacing="0" width="750"class="p"><tr valign="top"><td width="300" align="left" class="style">%s &nbsp; %s</td><td width="300" align="right"><a href="#" class="Lnav" />Top</a></td></tr></table>',$obj->dep, $obj->nom);
}
$result->close();



$conn = db_connect();
$result = $conn->query("SELECT id, nom, dep FROM commanderies WHERE dep='70' ORDER BY dep ASC");
while ($obj = $result->fetch_object()) {

printf ('<table border="0" cellpadding="0" cellspacing="0" width="750"class="p"><tr valign="top"><td width="300" align="left" class="style">%s &nbsp; %s</td><td width="300" align="right"><a href="#" class="Lnav" />Top</a></td></tr></table>',$obj->dep, $obj->nom);
}
$result->close();
$conn->close();
?>


Merci Jack Bocar
jackbocar
le 11/08/2007 à 18:07
N'affiche que la première ligne de la TABLE
Bonjour,

Mon problème, avec la méthode procédurale, sur cette page commanderies_A.php, s'affiche 70 informations: Ab à Az.

Avec la méthode objet, ne s'affiche que la première qui commence par Ab ?

Que puis-je faire pour que toutes les infos s'affichent ?

Merci de votre aide.

Jack Bocar


Mon code, ma requête pour afficher toutes les informations : les id, les noms, les départements, les textes commençant par la lettre A :

Exemple :

Abbeville (80)
Plusieurs de ces maisons formaient sous les Templiers une préceptorie ou petite commanderie que les Hospitaliers jugèrent à propos de supprimer, en les réunissant pour en faire des membres de la commanderie de Beauvoir...

<?php
$mysqli = new mysqli('localhost', 'jackbocar', 'XXXXXXXXXXX', 'MyBase');

if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}

$query = 'SELECT id, nom, dep, news FROM commanderies WHERE nom REGEXP "^A" ORDER BY nom ASC';
$result = $mysqli->query($query);

$row = $result->fetch_array(MYSQLI_ASSOC);

printf ('<a name="%s"></a><p class="p-com"><b class="style">%s &nbsp; (%s)</b><br /><br /><span class="com">%s</span><br />', $row["id"], MyStripSlashes($row["nom"]), $row["dep"], nl2br($row["news"]));
printf ('<br /><a href="#" class="Lnav">Top</a><br /><br />');
printf ('</p>');

$result->close();
$mysqli->close();
?>




Mon code, ma requête pour afficher mon menu et toutes les id, les noms, commençant par la lettre A :
Exemple : Abbeville

</div><div id="sidebar" class="column">
<div class="menuBarTop">Commanderies [A]</div>
<?php
$mysqli = new mysqli('localhost', 'jackbocar', 'XXXXXXXXXXX', 'MyBase');

if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}

$query = 'SELECT id, nom FROM commanderies WHERE nom REGEXP "^A" ORDER BY nom ASC';
$result = $mysqli->query($query);

$row = $result->fetch_array(MYSQLI_ASSOC);
printf ('<a href="'.$_SERVER['PHP_SELF'].'?page=commanderies_A#%s" class="menuNav">%s</a><br />', $row["id"], MyStripSlashes($row["nom"]));

$result->close();
$mysqli->close();
?>
<br /><br />
</div>
jackbocar
le 02/08/2007 à 09:38
Je ne comprends pas mon affichage
Bonjour,

Je ne comprends vraiment rien à ce système de protection "injections QSL".

Lorsque j'envoie des données dans la base avec cet argument :
$commanderie = mysqli_real_escape_string($link, $_POST['commanderie']);


L'affichage donne dans la table donne ceci : L'\\\année, l'\\\autre, l'\\\enfer…

Pour que ces mots échappés, se lisent correctement, je suis obligé de faire ceci :
stripslashes(stripslashes($row[2])),


Et pour les sauts de ligne : <br />. Je dois écrire mes nouvelles sur une seule ligne comme ceci : Bonjour<br />Le phpfacile est un des meilleurs sites sur ce langage de programmation<br />Jack Bocar.

Car, si j'écris comme ceci :
Bonjour
<br />
Le phpfacile est un des meilleurs sites sur ce langage de programmation
<br />
Jack Bocar.

A l'affichage, je vois des "mm" ?

Ou, si j'écris comme ceci :

Bonjour

Le phpfacile est un des meilleurs sites sur ce langage de programmation

Jack Bocar.



Cette fois-ci, je vois des : \n\n.

Puis, j'ai un autre problème, lorsque j'envoie une nouvelle, elle ne s'affiche que lorsque j'envoie la suivante, qui elle bien sûr, attend la suivante pour s'afficher.

<?php
if (isset($_POST['lieu']) && isset($_POST['dep']) && is_numeric($_POST['dep']) && isset($_POST['commanderie']) && isset($_POST['precepteur']) && isset($_POST['visible']) && is_numeric($_POST['visible']) ) {
if ($link = mysqli_connect('localhost', 'jackbocar', 'XXXXXX')) {
mysqli_select_db($link, 'possessions');
$stmt = mysqli_prepare($link, 'INSERT INTO commanderies (lieu, dep, commanderie, precepteur, visible) VALUES (?, ?, ?, ?, ?)');
$lieu = mysqli_real_escape_string($link, $_POST['lieu']);
$dep = intval($_POST['dep']);
$commanderie = nl2br(mysqli_real_escape_string($link, $_POST['commanderie']));
$precepteur = mysqli_real_escape_string($link, $_POST['precepteur']);
$visible = intval($_POST['visible']);
mysqli_stmt_bind_param($stmt, 'sissi', $lieu, $dep, $commanderie, $precepteur, $visible);
if (mysqli_stmt_execute($stmt)) {
echo 'Commanderies saved.';
} else {
echo 'Error d\'&eacute;criture dans la table.<br /><br />';
}
mysqli_close($link);
} else {
echo 'Connection failed.';
}
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Lieu : <input type="text" name="lieu" size="30" /><br />
Dep : <input type="text" name="dep" size="2" /><br />
Commanderie <textarea name="commanderie" cols="50" rows="10"></textarea><br />
Preceteur <input type="text" name="precepteur" size="30" /><br />
Visible : <input type="text" name="visible" size="1" value="0" /><br />
<input type="submit" value="Save" />
</form>
</body>
</html>



Merci de vos conseils

Jack Bocar
jackbocar
le 27/07/2007 à 17:15
Affichage données
Mon problème est l'affichage, voici le résultat sur un mot avec apostrophe : \"l\'Espitalet\"

Je ne comprends pas très bien les : mysqli_real_escape_string pour l'insertion et les : htmlspecialchars pour la lecture.


Insertion des données :

<?php
if (isset($_POST['lieu']) && isset($_POST['dep']) && isset($_POST['description']) && isset($_POST['precepteur'])) {
if ($db = @mysqli_connect('localhost', 'moi', 'password')) {
require_once 'stripFormSlashes.inc.php';
mysqli_select_db($db, 'possessions');
$stmt = mysqli_prepare($db, 'INSERT INTO commanderies (lieu, dep, description, precepteur) VALUES (?, ?, ?, ?)');

$lieu = mysqli_real_escape_string($db, $_POST['lieu']);
$dep = mysqli_real_escape_string($db, $_POST['dep']);
$description = nl2br(mysqli_real_escape_string($db, $_POST['description']));
$precepteur = mysqli_real_escape_string($db, $_POST['precepteur']);
mysqli_stmt_bind_param($stmt, 'ssss', $lieu, $dep, $description, $precepteur);
if (mysqli_stmt_execute($stmt)) {
echo 'Commanderie sauv&eacute;e.';
} else {
echo 'Erreur d\'écriture dans la table commanderies.<br />';
}
mysqli_close($db);
} else {
echo 'Erreur de la connection.';
}
}
?>



Lecture des données :


<?php
if ($db = mysqli_connect('localhost', 'moi', 'password')) {
mysqli_select_db($db, 'possessions');
$result = mysqli_query($db, 'SELECT lieu, dep, description, precepteur FROM commanderies');
while ($row = mysqli_fetch_object($result)) {

echo '<p class="cadre">';
printf(
'<b class="style">%s &nbsp; (%s)</b><br />%s<br /><br />Precpteur (s) : <span class="precepteur">%s</span><br />',
//$news = nl2br($news);
htmlspecialchars($row->lieu),
htmlspecialchars($row->dep),
nl2br(htmlspecialchars_decode($row->description)),
htmlspecialchars($row->precepteur)
);
echo '</p>';
}
mysqli_close($db);
} else {
echo '<tr><td colspan="4">Connection failed.</td></tr>';
}
?>


Merci de votre aide

Jack Bocar
jackbocar
le 16/07/2007 à 17:43
gestion des sessions
Bonjour,

Je suis en ce moment sur un gestionnaire personnalisé de sessions.

Mais, je cale sur la dernière fonction.

J'ai beau rechercher sur mon livre, je ne trouve pas ce qu'il faut écrire ?


<?php
session_set_save_handler ('init','ferme','lit','ecrit','efface','nettoie');
?>

<?php
function init ( $session_save_path, $session_name ) {
global $repertoire_stockage , $nom_de_session ;
$repertoire_stockage = $session_save_path ;
$nom_de_session = $session_name ;
return TRUE ;
}

function ferme() {
return TRUE ;

}


/*----------------------------------------------------------------------------*/


function lit( $identifiant ) {
global $repertoire_stockage , $nom_de_session ;
$fichier = $repertoire_stockage.'./tmp'.$nom_de_session.$identifiant;

if ($fp = @fopen($fichier, 'r') ) {
$donnees = fread($fp, filesize($fichier) ) ;
fclose($fp) ;
return $donnees ;
} else {
return '';
}
}


/*----------------------------------------------------------------------------*/

function ecrit($identifiant, $donnees ) {
global $repertoire_stockage , $nom_de_session ;
$fichier = $repertoire_stockage.'./tmp'.$nom_de_session.$identifiant;

$fp = fopen($fichier, 'w');
fwrite( $fp, $donnees, strlen($donnees) ) ;
fclose($fp);
return TRUE ;
}


/*----------------------------------------------------------------------------*/

function efface($identifiant) {
global $repertoire_stockage , $nom_de_session ;
$fichier = $repertoire_stockage.'./tmp'.$nom_de_session.$identifiant;
return @unlink($fichier) ;
}


/*----------------------------------------------------------------------------*/

function netoie($age) {

}
?>


Merci de votre aide

Jack Bocar
jackbocar
le 15/07/2007 à 11:42
Compte Invalide ?
J'ai une erreur que je ne vois pas !

Merci de votre aide

Jack Bocar

<?php
$dbhote = 'localhost';
$dbuser = 'jackbocar';
$dbpass = 'XXXXXXXXXX';
$dbbase = 'Base_test';

$dsn = "mysql:dbname=$dbbase;host=$dbhote";
$dbh = new PDO($dsn, $dbuser, $dbpass);
?>

<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$sql = ('SELECT count(*) FROM user as nbres WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"');
$result = $dbh->query($sql);
$data = $result->fetch();

$dbh = null;

if ($data['nbres'] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}

elseif ($nbres == 0) {
$message = 'Compte invalide.';
}

else {
$message = 'La base de donn&eacute;e est down.';
}
}
else {
$message = 'Un des champs requis est vide.';
}
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Verification identification</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="index,follow" />
<meta name="category" content="histoire" />
<meta name="revisit-after" content="1 days" />
<meta name="author" lang="fr" content="Jack Bocar" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" media="screen" href="./css/main.css" />
</head>
<body>
<?php echo $message ?>
<br /><br />

<form action="verif.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
</body>
</html>
LoadingChargement en cours