Bonjour,
Je souhaites développer une application qui affiche une liste de fichiers de type blob en fonction d'utilisateurs. Cependant mon code ouvre le fichier au lieu de proposer une page de lien.
J'ai crée 2 tables dans une bdd appelé resultats
-- Structure de la table `resultats`
--
CREATE TABLE IF NOT EXISTS `resultats` (
`resultatid` smallint(5) unsigned NOT NULL,
`dossier` varchar(20) NOT NULL,
`fichier` longblob NOT NULL,
`extension` varchar(50) NOT NULL,
`userid` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`resultatid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
et -- Structure de la table `consultations`
--
CREATE TABLE IF NOT EXISTS `consultations` (
`ipconsult` varchar(50) NOT NULL,
`dateconsult` datetime NOT NULL,
`resultatid` smallint(6) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`resultatid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
mon code est le suivant, un formulaire permet à l'utilisateur de s'authentifier :
<table border="0.5" width="500" id="table1" bgcolor="#DDDDDD">
<tr>
<td style="text-align:center;">
<form action="cible.php" method="post">
<p>
<b>Veuillez entrer votre login utilisateur : </b>
<br>
<input type="text" name="login" /> <img src="help.gif" />
<br><br><b>Veuillez entrer votre mot de passe : </b>
<br>
<input type="password" name="password" size="7" maxlength="5"> <img src="help.gif" />
<br>
<input type="submit">
</p>
</form>
</td>
</tr>
</table>
Ce formulaire est traité par ce script :
<?php
$ip=$_SERVER['REMOTE_ADDR'];
$date=gmdate("Y-m-d H:i:s", strtotime("+01:00"));
if (isset($_POST['login']) AND isset($_POST['password']))
{
echo 'DEBUG: ' . strip_tags($_POST['login']) . '-' . strip_tags($_POST['password']) . '<br>';
try
{
$bdd = new PDO('mysql:host=localhost;dbname=resultats', 'user', 'password');
$req = $bdd->prepare('SELECT dossier, fichier, extension, resultatid FROM resultats WHERE userid = ? AND password = ?');
$req->execute(array($_POST['login'], $_POST['password']));
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
echo 'try';
}
catch (Exception $e)
{
echo 'catch';
die('Erreur : ' . $e->getMessage());
$req2 = $bdd->prepare("INSERT INTO consultations (ipconsult,dateconsult, resultatid) values(?,?, ?)");
$req2->execute(array($ip,$date, 0));
echo '<p>Une erreur s\'est produite, veuillez retourner sur <a href="/">la page d\'accueil.</a></p>';
}
$donnees = $req->fetch();
if ($donnees)
{
$req2 = $bdd->prepare("INSERT INTO consultations (ipconsult,dateconsult, resultatid) values(?,?, ?)");
$req2->execute(array($ip,$date, $donnees['resultatid']));
// ouvre le fichier pdf
header( "Content-type: application/".$donnees['extension']);
header( "Content-length: ".strlen($donnees['fichier']).".".$donnees['extension']);
header( "Content-Disposition: attachment; filename=".$donnees['dossier'].".".$donnees['extension']);
echo $donnees['fichier'];
}
else
{
echo '<p>Identifiants inconnus, veuillez retourner sur <a href="/">la page d\'accueil.</a></p>';
$req2 = $bdd->prepare("INSERT INTO consultations (ipconsult,dateconsult, resultatid) values(?,?, ?)");
$req2->execute(array($ip,$date, 0));
}
// echo '<p><a href="/">Cliquer ici</a> pour revenir à l\'accueil.php</p>';
$req->closeCursor();
}
else
{
echo '<p>Une erreur s\'est produite, veuillez retourner sur <a href="/">la page d\'accueil.</a></p>';
$req2 = $bdd->prepare("INSERT INTO consultations (ipconsult,dateconsult, resultatid) values(?,?, ?)");
$req2->execute(array($ip,$date, 0));
}
?>
Par ce biais, j'arrive à ouvrir le pdf en fonction de l'utilisateur mais je souhaiterais arriver sur une page ou un lien apparaitrait vers le pdf.
Avez - vous idée sur la façon de procéder ?