News box avec une image, un texte et un timing simples

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 15:29

OK, je viens de faire ça... on dirait que TOUT marche...

Me manque plus qu'à protéger deux fichiers... tu sais comment faire ?

Par exemple si on tente d'accéder à de ces deux fichiers, il faut insérer un mot de passe...
regarde sur google avec htpasswd

Eléphant du PHP | 82 Messages

09 juin 2010, 15:35

C'est ce que je fais, je tombe sur "protéger un dossier" mais moi je ne voudrais protéger que deux fichiers... je cherche en tout cas, je devrais trouver, merci stealth35 :D

Eléphant du PHP | 82 Messages

17 juin 2010, 15:35

Re !

Bon ben tout marche sauf l'insertion de témoignages qui je ne sais pourquoi a un petit problème. L'insertion de news marche par contre, j'ai comparé, j'ai pas vu de différence... la seule différence c'est que certains champs sont différents (dans témoignages il n'y a pas de titre par exemple).

Insertion de news (marche)
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
if(!empty($_FILES))
{
$chemin_destination = 'sites/all/images/';
$dossier = 'sites/all/images/';
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');

//D&eacute;but des v&eacute;rifications de s&eacute;curit&eacute;...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = '<br /><br />Le fichier est trop lourd<br /><br />';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇ&egrave;&eacute;ÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåç&egrave;&eacute;êëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_news']['tmp_name'], $dossier . time() . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionn&eacute;
     {
          echo '<br /><br />Upload effectu&eacute; avec succ&egrave;s !<br /><br />';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo '<br /><br />&Eacute;chec de l\'upload !<br /><br />';
     }
}
else
{
     echo $erreur;
}

// on teste si le formulaire a &eacute;t&eacute; valid&eacute;
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');  
mysql_select_db('***', $base);  

// on teste la d&eacute;claration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['texte_news'])) {
        $erreur = 'Les variables n&eacute;cessaires au script ne sont pas d&eacute;finies.';
}
else {
		
		if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['texte_news'])) {
                $erreur = 'Au moins un des champs est vide.';
        }
		
        // si tout est bon, on peut commencer l'insertion dans la base
        else {
                // lancement de la requête d'insertion
                $sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($dossier . time() . $fichier).'", "'.mysql_escape_string($_POST['texte_news']).'")';
                // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
                echo $sql;
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                // on ferme la connexion à la base de donn&eacute;es
                mysql_close();
                /* on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez plac&eacute; cette page dans un r&eacute;pertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'acc&egrave;s afin de retomber sur la page d'accueil du site. 
                header('Location: index.php'); */
                // on termine le script courant
                exit();
                }
        }
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les donn&eacute;es -->
<form method="post" action="insert_news.php" enctype="multipart/form-data">
	<table>
		<tr>
			<td>
				<span class="gras">Auteur :</span>
			</td>
			<td>
				<input type="text" name="auteur" maxlength="100" size="30" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Titre :</span>
			</td>
			<td>
				<input type="text" name="titre" maxlength="100" size="100" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Image</span>
				<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
			</td>
			<td>
				<input type=hidden name=MAX_FILE_SIZE  value=102400>
				<input type="file" name="image_news" id="image_news" value="image_news" />
			</td>   
		</tr>
		<tr>
			<td>
				<span class="gras">News :</span>
			</td>
			<td>
				<textarea name="texte_news" cols="50" rows="10"><?php if (isset($_POST['texte_news'])) echo htmlentities(trim($_POST['texte_news'])); ?></textarea>
			</td>
		</tr>
		<tr>
			<td>
			<td align="right">
				<input type="submit" name="go" value="Poster la news">
			</td>
		</tr>
	</table>
</form>
<?php
// on affiche les erreurs &eacute;ventuelles  
if (isset($erreur)) echo '<br /><br />',$erreur;  
?>
</body>
</html>
Insertion de témoignages (ne marche pas)
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
if(!empty($_FILES))
{
$chemin_destination = 'sites/all/images/';
$dossier = 'sites/all/images/';
$fichier = basename($_FILES['image_tems']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_tems']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_tems']['name'], '.');

//D&eacute;but des v&eacute;rifications de s&eacute;curit&eacute;...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = '<br /><br />Le fichier est trop lourd<br /><br />';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇ&egrave;&eacute;ÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåç&egrave;&eacute;êëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_tems']['tmp_name'], $dossier . time() . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionn&eacute;
     {
          echo '<br /><br />Upload effectu&eacute; avec succ&egrave;s !<br /><br />';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo '<br /><br />&Eacute;chec de l\'upload !<br /><br />';
     }
}
else
{
     echo $erreur;
}

// on teste si le formulaire a &eacute;t&eacute; valid&eacute;
if (isset($_POST['go']) && $_POST['go']=='Poster le t&eacute;moignage') {
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');  
mysql_select_db('***', $base);  

// on teste la d&eacute;claration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['texte_tems'])) {
        $erreur = 'Les variables n&eacute;cessaires au script ne sont pas d&eacute;finies.';
}
else {
		
		if (empty($_POST['auteur']) || empty($_POST['texte_tems'])) {
                $erreur = 'Au moins un des champs est vide.';
        }
		
        // si tout est bon, on peut commencer l'insertion dans la base
        else {
                // lancement de la requête d'insertion
                $sql = 'INSERT INTO temoignages VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($dossier . time() . $fichier).'", "'.mysql_escape_string($_POST['texte_tems']).'")';
                // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
                echo $sql;
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                // on ferme la connexion à la base de donn&eacute;es
                mysql_close();
                /* on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez plac&eacute; cette page dans un r&eacute;pertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'acc&egrave;s afin de retomber sur la page d'accueil du site. 
                header('Location: index.php'); */
                // on termine le script courant
                exit();
                }
        }
}
}
?>
<html>
<head>
<title>Insertion d'un nouveau t&eacute;moignage</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les donn&eacute;es -->
<form method="post" action="insert_tems.php" enctype="multipart/form-data">
	<table>
		<tr>
			<td>
				<span class="gras">Auteur :</span>
			</td>
			<td>
				<input type="text" name="auteur" maxlength="100" size="30" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Image</span>
				<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
			</td>
			<td>
				<input type=hidden name=MAX_FILE_SIZE  value=102400>
				<input type="file" name="image_tems" id="image_tems" value="image_tems" />
			</td>   
		</tr>
		<tr>
			<td>
				<span class="gras">T&eacute;moignage :</span>
			</td>
			<td>
				<textarea name="texte_tems" cols="50" rows="10"><?php if (isset($_POST['texte_tems'])) echo htmlentities(trim($_POST['texte_tems'])); ?></textarea>
			</td>
		</tr>
		<tr>
			<td>
			<td align="right">
				<input type="submit" name="go" value="Poster le t&eacute;moignage">
			</td>
		</tr>
	</table>
</form>
<?php
// on affiche les erreurs &eacute;ventuelles  
if (isset($erreur)) echo '<br /><br />',$erreur;  
?>
</body>
</html>
Merci =)

ViPHP
ViPHP | 5462 Messages

17 juin 2010, 15:36

t'as une erreur ?

Eléphant du PHP | 82 Messages

17 juin 2010, 15:43

Non, il me dit que tout est ok, mais il n'a rien inséré dans la BDD (table temoignages)

ViPHP
ViPHP | 5462 Messages

17 juin 2010, 16:03

Non, il me dit que tout est ok, mais il n'a rien inséré dans la BDD (table temoignages)
ton echo $sql; donne quoi ?

Eléphant du PHP | 82 Messages

18 juin 2010, 09:52

Array ( [image_tems] => Array ( [name] => cube1.jpg [type] => image/jpeg [tmp_name] => /var/log/tmp/phpqoRvUb [error] => 0 [size] => 5052 ) )

Upload effectué avec succès !

Une fois envoyé...

ViPHP
ViPHP | 5462 Messages

18 juin 2010, 15:06

Array ( [image_tems] => Array ( [name] => cube1.jpg [type] => image/jpeg [tmp_name] => /var/log/tmp/phpqoRvUb [error] => 0 [size] => 5052 ) )

Upload effectué avec succès !

Une fois envoyé...
il te fais pas ta requête la, puisque ton echo $sql; ne s'affiche pas, l'une de tes condition n'est pas remplis

Eléphant du PHP | 82 Messages

18 juin 2010, 15:25

Bizarre, j'ai mis dans le formulaire les infos qui conviennent... ou alors quand j'ai voulu enlever des champs, j'ai oublié d'en enlever un dans le code HTML ou dans le code PHP ?

Genre dans PHP yaurait auteur titre date image texte et dans HTML oubli du titre ou vice versa ?

ViPHP
ViPHP | 5462 Messages

18 juin 2010, 15:27

Bizarre, j'ai mis dans le formulaire les infos qui conviennent... ou alors quand j'ai voulu enlever des champs, j'ai oublié d'en enlever un dans le code HTML ou dans le code PHP ?

Genre dans PHP yaurait auteur titre date image texte et dans HTML oubli du titre ou vice versa ?
a toi de bien mettre de message a chaque "else" vérifie chaque étape