Advertisement
Guest User

Untitled

a guest
Apr 12th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.92 KB | None | 0 0
  1. /** Main-functions **/
  2.  
  3. <?php
  4. session_start();
  5.  
  6. $bddhost = 'localhost';
  7. $bddname = 'streaming';
  8. $bdduser = 'root';
  9. $bddpswd = '';
  10.  
  11. try{
  12. $bdd = new PDO('mysql:host='.$bddhost.';dbname='.$bddname,$bdduser,$bddpswd,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  13. }catch(PDOexception $e){
  14. die("Une erreur est survenue lors de la connexion à la base de données");
  15. }
  16. function post($title,$content){
  17. global $bdd;
  18.  
  19. $p = [
  20. 'nom' => $title,
  21. 'description' => $content
  22. ];
  23.  
  24. $sql = "
  25. INSERT INTO manga(nom,description,manga_id,date)
  26. VALUES(:nom,:description,:manga_id,NOW())
  27. ";
  28.  
  29. $req = $bdd->prepare($sql);
  30. $req->execute($p);
  31.  
  32. }
  33.  
  34. function post_img($tmp_name, $extension){
  35. global $bdd;
  36. $id = $bdd->lastInsertId();
  37. $i = [
  38. 'id' => $id,
  39. 'image' => $id.$extension //$id = 25 , $extension = .jpg $id.$extension = "25".".jpg" = 25.jpg
  40. ];
  41.  
  42. $sql = "UPDATE manga SET image = :image WHERE id = :id";
  43. $req = $bdd->prepare($sql);
  44. $req->execute($i);
  45. move_uploaded_file($tmp_name,"../img/posts/".$id.$extension);
  46. }
  47. function get_posts(){
  48.  
  49. global $bdd;
  50.  
  51. $req = $bdd->query("SELECT * FROM manga ORDER BY date DESC");
  52.  
  53. $results = [];
  54. while($rows = $req->fetchObject()){
  55. $results[] = $rows;
  56. }
  57.  
  58. return $results;
  59.  
  60.  
  61. }
  62. /* L'édit des fichiers*/
  63. function get_post(){
  64.  
  65. global $bdd;
  66.  
  67. $req = $bdd->query("
  68. SELECT manga.id,
  69. manga.nom,
  70. manga.description,
  71. manga.manga_id,
  72. manga.image,
  73. manga.date
  74. ");
  75.  
  76. $result = $req->fetchObject();
  77. return $result;
  78. }
  79.  
  80.  
  81. /* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)*/
  82. header('Content-type: text/html; charset=UTF-8');
  83.  
  84. /* Initialisation de la variable du message de réponse*/
  85. $message = null;
  86.  
  87. /* Récupération des variables issues du formulaire par la méthode post*/
  88. $pseudo = filter_input(INPUT_POST, 'pseudo');
  89. $pass = sha1(filter_input(INPUT_POST, 'pass'));
  90. $mail = filter_input(INPUT_POST, 'mail');
  91.  
  92. /* Si le formulaire est envoyé */
  93. if (isset($pseudo,$pass,$mail))
  94. {
  95.  
  96. /* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */
  97. $pseudo = trim($pseudo) != '' ? $pseudo : null;
  98. $pass = trim($pass) != '' ? $pass : null;
  99. $mail = trim($mail) != '' ? $mail : null;
  100.  
  101.  
  102. /* Si $pseudo et $pass différents de null */
  103. if(isset($pseudo,$pass))
  104. {
  105. /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
  106. A MODIFIER avec vos valeurs */
  107. $hostname = "localhost";
  108. $database = "streaming";
  109. $username = "root";
  110. $password = "";
  111.  
  112. /* Configuration des options de connexion */
  113.  
  114. /* Désactive l'éumlateur de requêtes préparées (hautement recommandé) */
  115. $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
  116.  
  117. /* Active le mode exception */
  118. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  119.  
  120. /* Indique le charset */
  121. $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
  122.  
  123. /* Connexion */
  124. try
  125. {
  126. $connect = new PDO('mysql:host='.$hostname.';dbname='.$database, $username, $password, $pdo_options);
  127. }
  128. catch (PDOException $e)
  129. {
  130. exit('problème de connexion à la base');
  131. }
  132.  
  133.  
  134. /* Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire */
  135. $requete = "SELECT count(*) FROM membres WHERE pseudo = ?";
  136.  
  137. try
  138. {
  139. /* préparation de la requête*/
  140. $req_prep = $connect->prepare($requete);
  141.  
  142. /* Exécution de la requête en passant la position du marqueur et sa variable associée dans un tableau*/
  143. $req_prep->execute(array(0=>$pseudo));
  144.  
  145. /* Récupération du résultat */
  146. $resultat = $req_prep->fetchColumn();
  147.  
  148. if ($resultat == 0)
  149. /* Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer */
  150. {
  151. /* Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()*/
  152. $insertion = "INSERT INTO membres(pseudo,pass,mail,date_enregistrement) VALUES(:nom, :password,:mail, NOW())";
  153.  
  154. /* préparation de l'insertion */
  155. $insert_prep = $connect->prepare($insertion);
  156.  
  157. /* Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau*/
  158. $inser_exec = $insert_prep->execute(array(':nom'=>$pseudo,':password'=>$pass,':mail'=>$mail));
  159.  
  160. /* Si l'insertion s'est faite correctement...*/
  161. if ($inser_exec === true)
  162. {
  163. /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter. */
  164. if (!session_id()) session_start();
  165. $_SESSION['login'] = $pseudo;
  166.  
  167. /* A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.*/
  168. $message = '<p style="color:#fff">Votre inscription est enregistrée -> <a href="login.php">Connexion</a></p>';
  169. /*ou redirection vers une page en cas de succès ex : menu.php*/
  170. /*header("Location: menu.php");
  171. exit(); */
  172. }
  173. }
  174. else
  175. { /* Le pseudo est déjà utilisé */
  176. $message = '<p style="color:#fff">Ce pseudo est déjà utilisé, changez-le.</p>';
  177. }
  178. }
  179. catch (PDOException $e)
  180. {
  181. $message = '<p style="color:#fff">Problème dans la requête d\'insertion <br/> Veuillez verifiez l\'email</p>';
  182. }
  183. }
  184. else
  185. { /* Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli*/
  186. $message = '<p style="color:#fff">Les champs Pseudo et Mot de passe doivent être remplis.</p>';
  187. }
  188. }
  189.  
  190. /* Login */
  191.  
  192. /* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)*/
  193. header('Content-type: text/html; charset=UTF-8');
  194.  
  195. /* Initialisation de la variable du message de réponse*/
  196. $message = null;
  197.  
  198. /* Récupération des variables issues du formulaire par la méthode post*/
  199. $pseudo = filter_input(INPUT_POST, 'pseudo');
  200. $pass = sha1(filter_input(INPUT_POST, 'pass'));
  201.  
  202. /* Si le formulaire est envoyé*/
  203. if (isset($pseudo,$pass))
  204. {
  205.  
  206. /* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */
  207. $pseudo = trim($pseudo) != '' ? $pseudo : null;
  208. $pass = sha1(trim($pass)) != '' ? $pass : null;
  209.  
  210.  
  211. /* Si $pseudo et $pass différents de null */
  212. if(isset($pseudo,$pass))
  213. {
  214. /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
  215. A MODIFIER avec vos valeurs */
  216. $hostname = "localhost";
  217. $database = "streaming";
  218. $username = "root";
  219. $password = "";
  220.  
  221. /* Configuration des options de connexion */
  222.  
  223. /* Désactive l'éumlateur de requêtes préparées (hautement recommandé) */
  224. $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
  225.  
  226. /* Active le mode exception */
  227. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  228.  
  229. /* Indique le charset */
  230. $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
  231.  
  232. /* Connexion */
  233. try
  234. {
  235. $connect = new PDO('mysql:host='.$hostname.';dbname='.$database, $username, $password, $pdo_options);
  236. }
  237. catch (PDOException $e)
  238. {
  239. exit('problème de connexion à la base');
  240. }
  241.  
  242. /* Requête pour récupérer les enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire */
  243. $requete = "SELECT * FROM membres WHERE pseudo = :nom AND pass = :password";
  244.  
  245. try
  246. {
  247. /* Préparation de la requête*/
  248. $req_prep = $connect->prepare($requete);
  249.  
  250. /* Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau*/
  251. $req_prep->execute(array(':nom'=>$pseudo,':password'=>$pass));
  252.  
  253. /* Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois*/
  254. $resultat = $req_prep->fetchAll();
  255.  
  256. $nb_result = count($resultat);
  257.  
  258. if ($nb_result == 1)
  259. {
  260. /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter. */
  261. if (!session_id()) session_start();
  262. $_SESSION['login'] = $pseudo;
  263.  
  264. $message =
  265. header("Location: ../index.php");
  266. exit();
  267.  
  268. /* Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple */
  269. /* $result = $resultat[0];
  270. echo $result['pseudo'];
  271. echo $result['date_enregistrement'];
  272. */
  273. }
  274. else if ($nb_result > 1)
  275. {
  276. /* Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition */
  277. $message = '<p style="color:#fff">Problème de d\'unicité dans la table</p>';
  278. }
  279. else
  280. { /* Le pseudo ou le mot de passe sont incorrect */
  281. $message = '<p style="color:#fff">Le pseudo ou le mot de passe sont incorrect</p>';
  282. }
  283. }
  284. catch (PDOException $e)
  285. {
  286. $message = '<p style="color:#fff">Problème dans la requête de sélection</p>';
  287. }
  288. }
  289. else
  290. {/*au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli*/
  291. $message = '<p style="color:#fff">Les champs Pseudo et Mot de passe doivent être remplis.</p>';
  292. }
  293. }
  294.  
  295.  
  296. /** Fichier **/
  297.  
  298. <?php
  299. require('../../../../functions/main-functions.php');
  300. require('../../functions/admin.php');
  301. $categorie = "Harem"
  302. ?>
  303. <!DOCTYPE html>
  304. <html lang="fr">
  305. <head>
  306.  
  307. <meta charset="utf-8">
  308. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  309. <meta name="viewport" content="width=device-width, initial-scale=1">
  310.  
  311. <title>Manga Streaming</title>
  312.  
  313. <link rel="stylesheet" href="../../css/style.css">
  314. <link rel="stylesheet" href="../../css/header.css">
  315. <link href='http://fonts.googleapis.com/css?family=Cookie' rel='stylesheet' type='text/css'>
  316. <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  317.  
  318. </head>
  319. <body>
  320. <header class="header-two-bars">
  321.  
  322. <div class="header-first-bar">
  323.  
  324. <div class="header-limiter">
  325.  
  326. <h1><a href="#">Manga<span>Streaming</span></a></h1>
  327.  
  328. <nav>
  329. <a href="../../index.php" class="selected">Accueil</a>
  330. </nav>
  331.  
  332. <div class="header-user-menu">
  333. <ul>
  334. <li><a href="#"><?php echo htmlspecialchars($_SESSION['admin']).' :'; ?></a></li>
  335. <li><a href="#">Settings</a></li>
  336. <li><a href="#" class="highlight">Logout</a></li>
  337. </ul>
  338. </div>
  339.  
  340. </div>
  341.  
  342. </div>
  343.  
  344. <div class="header-second-bar">
  345.  
  346. <div class="header-limiter">
  347. <h2><a href="#">Manga Streaming / Admin</a></h2>
  348.  
  349. <nav>
  350. <a href="#"><i class="fa fa-comments-o"></i> Chat</a>
  351. <a href="#"><i class="fa fa-group"></i> Inscrit</a>
  352. <?php
  353. if(isset($_SESSION['admin'])){
  354. ?>
  355. <a href="#"><i class="fa fa-cogs"></i> Settings</a>
  356. <?php
  357. }
  358. ?>
  359. <a href="../../../contact.php"><i class="fa fa-exclamation-triangle"></i> Besoin d'aide</a>
  360. </nav>
  361.  
  362. </div>
  363.  
  364. </div>
  365.  
  366. </header>
  367.  
  368. <div id="manga">
  369. <div class="Message">
  370. <h1 align="center" style=" font-size: 35px;text-transform: uppercase;font-weight: 500;margin-left: -40%;;"><?php echo $categorie; ?>:</h1>
  371. </div>
  372. <section class="listings">
  373. <div class="wrapper">
  374. <?php
  375.  
  376. if(isset($_POST['post'])){
  377. $title = htmlspecialchars(trim($_POST['nom']));
  378. $content = htmlspecialchars(trim($_POST['content']));
  379. $rutube = htmlspecialchars(trim($_POST['rutube']));
  380. $streamago = htmlspecialchars(trim($_POST['streamago']));
  381.  
  382. $errors = [];
  383.  
  384. if(empty($title) || empty($content) || empty($rutube) || empty($streamago)){
  385. $errors['empty'] = "Veuillez remplir tous les champs / verifie surtout les liens de streaming :)";
  386. }
  387.  
  388. if(!empty($_FILES['image']['name'])){
  389. $file = $_FILES['image']['name'];
  390. $extensions = ['.png','.jpg','.jpeg','.gif','.PNG','.JPG','.JPEG','.GIF'];
  391. $extension = strrchr($file,'.');
  392.  
  393. if(!in_array($extension,$extensions)){
  394. $errors['image'] = "Cette image n'est pas valable";
  395. }
  396. }
  397.  
  398. if(!empty($errors)){
  399. ?>
  400. <div class="card red">
  401. <div class="card-content white-text">
  402. <?php
  403. foreach($errors as $error){
  404. echo $error."<br/>";
  405. }
  406. ?>
  407. </div>
  408. </div>
  409. <?php
  410. }else{
  411. post($title,$content,$rutube,$streamago);
  412. if(!empty($_FILES['image']['name'])){
  413. post_img($_FILES['image']['tmp_name'], $extension);
  414. }else{
  415. $id = $db->lastInsertId();
  416. }
  417. }
  418. }
  419.  
  420. ?>
  421. <h2>Ajouter un manga a la sélection</h2>
  422. <form method="post" enctype="multipart/form-data">
  423. <div class="row">
  424. <div class="input-field col s12">
  425. Titre :
  426. <input type="text" name="nom" id="title"/>
  427.  
  428. </div>
  429.  
  430. <div class="input-field col s12">
  431. Description :
  432. <textarea name="content" id="content" class="materialize-textarea"></textarea>
  433.  
  434. </div>
  435. <div class="input-field col s12">
  436. lien Rutube
  437. <textarea name="rutube" id="lien" class="materialize-textarea" placeholder="exemple: https://www.youtube.com/"></textarea>
  438. </div>
  439. <div class="input-field col s12">
  440. lien Streamago :
  441. <textarea name="streamago" id="lien" class="materialize-textarea" placeholder="exemple: https://www.youtube.com/"></textarea>
  442. </div>
  443. <div class="col s12">
  444. <div class="input-field file-field">
  445. <div class="btn col s2">
  446. <span>Image</span>
  447. <input type="file" name="image" class="col s12"/>
  448. </div>
  449. </div>
  450. </div>
  451.  
  452.  
  453. <div class="col s6 right-align">
  454. <br/><br/>
  455. <button class="btn" type="submit" name="post">Ajouter</button>
  456. </div>
  457.  
  458. </div>
  459. </form>
  460. </div>
  461. </section>
  462.  
  463. </div>
  464.  
  465.  
  466. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  467.  
  468. </body>
  469. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement