|
1 | 1 | <?php |
2 | | -$mysql_db_hostname = "localhost"; |
3 | | -$mysql_db_user = "your_user"; |
4 | | -$mysql_db_password = "your_password"; |
5 | | -$mysql_db_database = "your_database"; |
6 | | - |
7 | | -$dbc = mysqli_connect('' . $mysql_db_hostname . '', '' . $mysql_db_user . '', '' . $mysql_db_password . '', '' . $mysql_db_database . '') OR die('Could not connect because: '.mysqli_connect_error()); |
8 | | - |
9 | | - |
10 | | -if (isset($_POST['add_account'])) { |
11 | | - |
12 | | - |
13 | | - if($_POST['fields']) { |
14 | | - foreach($_POST['fields'] as $key=>$fieldArray ) { |
15 | | - |
16 | | - $keys = array_keys($fieldArray); |
17 | | - |
18 | | - if (!empty($_FILES)) { |
19 | | - |
20 | | - if($_FILES['fields']['name'][$key]['file_uploaded'][0] != ''){ |
21 | | - // Get e-mail used for registration |
22 | | - if($_POST['fields'][$key]['email'] !=''){ |
23 | | - |
24 | | - //Set the upload directory |
25 | | - $uploaddir = 'uploads/'; |
26 | | - //Get time to use in file name |
27 | | - $newname = time(); |
28 | | - //Generate random number to add in file name |
29 | | - $rand = rand(100,999); |
30 | | - //Construct the name using the above values + original file name |
31 | | - $name = $newname.'-'.$rand.'-'.$_FILES['fields']['name'][$key]['file_uploaded'][0]; |
32 | | - //Get the temporary file name |
33 | | - $tempFile = $_FILES['fields']['tmp_name'][$key]['file_uploaded'][0]; |
34 | | - //Set the path and file name as it will be saved in the db |
35 | | - $uploadfile = $uploaddir.$name; |
36 | | - |
37 | | - //If the file was NOT moved from /tmp/ to our upload directory |
38 | | - if (move_uploaded_file($tempFile, $uploadfile)) { |
39 | | - |
40 | | - //Get the email value in $_POST |
41 | | - $email = $_POST['fields'][$key]['email']; |
42 | | - $first = $_POST['fields'][$key]['first']; |
43 | | - $last = $_POST['fields'][$key]['last']; |
44 | | - |
45 | | - //Construct the query to insert the data |
46 | | - $q = "INSERT INTO accounts (first, last, email, uploaded_file) VALUES ('".$first."','".$last."','".$email."', '".$uploadfile."')"; |
47 | | - $r = mysqli_query($dbc, $q); |
48 | | - |
49 | | - //If the query is successfull |
50 | | - if($r){ |
51 | | - |
52 | | - echo 'Name: '.$first.' '.$last.' <br />Email:'. $email.' <br /><img src="'. $uploadfile.'" style="max-width:120px; height: auto;"><br /><div style="color: green;"><strong>Success</strong></div>'; |
53 | | - |
54 | | - //Else if the query is not successfull, check if there is already a record with same data |
55 | | - |
56 | | - } else { |
57 | | - |
58 | | - echo '<div class="alert alert-danger">The request failed! Please try again later or open a ticket'; |
59 | | - |
60 | | - |
61 | | - } |
62 | | - |
63 | | - } else { //If the file was not attached to the request -- check can be skipped, as the field is required anyway |
64 | | - |
65 | | - echo '<br /> |
66 | | - <div class="alert alert-danger" role="alert"> |
67 | | - The data could not be saved to DB. |
68 | | - </div>'; |
69 | | - } |
70 | | - } // end if $_FILES |
71 | | - } // end for each loop |
72 | | - } |
73 | | - |
74 | | - } |
75 | | - } |
76 | | - |
77 | | - echo '<hr /><div style="width: 100%;"><i><h2><strong>' . count($_POST['fields']) . '</strong> Account(s) Added</h2></i> '; |
78 | | - echo '<p><a href="javascript:history.back();" class="btn btn-default">Go Back</a></p></div>'; |
79 | | - |
80 | | - |
| 2 | +// Start session |
| 3 | +session_start(); |
| 4 | +if (!isset($_SESSION['user'])) { |
| 5 | + header("Location: admin.php"); |
| 6 | + exit; |
81 | 7 | } |
82 | 8 |
|
83 | | -if (!isset($_POST['add_account'])) { |
84 | | - |
85 | | -// The form ?> |
86 | | -<form method="post" action="" enctype="multipart/form-data"> |
87 | | -<?php // adding a button to add new rows ?> |
88 | | -<p id="add_field"><a class="btn btn-default" href="#">Add Rows</a></p> |
89 | | - |
90 | | -<?php //building our form as a table. Also, adding a 1st line in the form. ?> |
91 | | -<table id="myTable"> |
92 | | -<thead> |
93 | | - <tr> |
94 | | - <th>#</th> |
95 | | - <th>First Name:</th> |
96 | | - <th>Last Name:</th> |
97 | | - <th>E-mail:</th> |
98 | | - <th>Upload file</th> |
99 | | - <th></th> |
100 | | - </tr> |
101 | | -</thead> |
102 | | -<tbody id="container"> |
103 | | - <tr> |
104 | | - <td>1</td> |
105 | | - <td><div class="form-group"><input class="form-control" name="fields[1][first]" type="text" placeholder="First" required/></div></td> |
106 | | - <td><div class="form-group"><input class="form-control" name="fields[1][last]" type="text" placeholder="Last" required/></div></td> |
107 | | - <td><div class="form-group"><input class="form-control" name="fields[1][email]" type="email" placeholder="email" required/></div></td> |
108 | | - <td><input class="btn btn-primary" id="userfiles" name="fields[1][file_uploaded][]" type="file" required = "required"/></td> |
109 | | - <td><input class="btn btn-danger" type="button" value="Remove" onclick="delRow(this)"> </td> |
110 | | - </tr> |
111 | | -</tbody> |
112 | | -</table> |
113 | | - |
114 | | -<input class="btn btn-success" type="submit" name="add_account" value="Submit Form" /> |
115 | | -</form> |
116 | | -<?php } ?> |
117 | | - |
118 | | -<?php //jQuery (necessary for Bootstrap's JavaScript plugins) ?> |
119 | | -<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> |
120 | | - |
121 | | - |
122 | | -<script type="text/javascript"> |
| 9 | +$dsn = 'mysql:host=your_host;dbname=your_database'; |
| 10 | +$username = 'your_username'; |
| 11 | +$password = 'your_password'; |
123 | 12 |
|
124 | | -$(function() { |
125 | | - |
126 | | - let rowCounter = 0; |
127 | | - |
128 | | - $('#add-row-btn').click(function() { |
129 | | - rowCounter++; |
130 | | - |
131 | | - const newRow = ` |
132 | | - <tr id="row-${rowCounter}"> |
133 | | - <td>${rowCounter}</td> |
134 | | - <td> |
135 | | - <div class="form-group"> |
136 | | - <input class="form-control" name="fields[${rowCounter}][first]" type="text" placeholder="First" required> |
137 | | - </div> |
138 | | - </td> |
139 | | - <td> |
140 | | - <div class="form-group"> |
141 | | - <input class="form-control" name="fields[${rowCounter}][last]" type="text" placeholder="Last" required> |
142 | | - </div> |
143 | | - </td> |
144 | | - <td> |
145 | | - <div class="form-group"> |
146 | | - <input class="form-control" name="fields[${rowCounter}][email]" type="email" placeholder="Email" required> |
147 | | - </div> |
148 | | - </td> |
149 | | - <td> |
150 | | - <input class="btn btn-primary" name="fields[${rowCounter}][file_uploaded][]" type="file" required> |
151 | | - </td> |
152 | | - <td> |
153 | | - <button class="btn btn-danger" type="button" onclick="removeRow(${rowCounter})">Remove</button> |
154 | | - </td> |
155 | | - </tr> |
156 | | - `; |
157 | | - |
158 | | - $('#container').append(newRow); |
159 | | - }); |
160 | | - |
161 | | - function removeRow(rowId) { |
162 | | - $(`#row-${rowId}`).remove(); |
163 | | - renumberRows(); |
164 | | - } |
165 | | - |
166 | | - function renumberRows() { |
167 | | - $('#container tr').each(function(index) { |
168 | | - const rowNumber = index + 1; |
169 | | - $(this).find('td:first').text(rowNumber); |
170 | | - $(this).attr('id', `row-${rowNumber}`); |
171 | | - }); |
172 | | - } |
| 13 | +try { |
| 14 | + $pdo = new PDO($dsn, $username, $password); |
| 15 | + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
| 16 | +} catch (PDOException $e) { |
| 17 | + die("Database connection failed: " . $e->getMessage()); |
| 18 | +} |
173 | 19 |
|
174 | | -}); |
175 | | -</script> |
| 20 | +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) { |
| 21 | + $fileName = $_FILES['file']['name']; |
| 22 | + $fileTmp = $_FILES['file']['tmp_name']; |
| 23 | + $uploadDir = 'uploads/'; |
| 24 | + |
| 25 | + if (!is_dir($uploadDir)) { |
| 26 | + mkdir($uploadDir, 0755, true); |
| 27 | + } |
| 28 | + |
| 29 | + $uploadPath = $uploadDir . basename($fileName); |
| 30 | + if (move_uploaded_file($fileTmp, $uploadPath)) { |
| 31 | + $stmt = $pdo->prepare("INSERT INTO uploads (filename) VALUES (:filename)"); |
| 32 | + $stmt->execute([':filename' => $fileName]); |
| 33 | + echo "File uploaded successfully."; |
| 34 | + } else { |
| 35 | + echo "Failed to upload file."; |
| 36 | + } |
| 37 | +} |
176 | 38 |
|
| 39 | +$files = $pdo->query("SELECT * FROM uploads")->fetchAll(PDO::FETCH_ASSOC); |
| 40 | +?> |
| 41 | + |
| 42 | +<!DOCTYPE html> |
| 43 | +<html lang="en"> |
| 44 | +<head> |
| 45 | + <meta charset="UTF-8"> |
| 46 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 47 | + <title>Upload Form</title> |
| 48 | +</head> |
| 49 | +<body> |
| 50 | + <h1>Upload Form</h1> |
| 51 | + <form method="post" enctype="multipart/form-data"> |
| 52 | + <label for="file">Choose file:</label> |
| 53 | + <input type="file" name="file" id="file" required> |
| 54 | + <button type="submit">Upload</button> |
| 55 | + </form> |
| 56 | + |
| 57 | + <h2>Uploaded Files</h2> |
| 58 | + <ul> |
| 59 | + <?php foreach ($files as $file): ?> |
| 60 | + <li><?= htmlspecialchars($file['filename']) ?></li> |
| 61 | + <?php endforeach; ?> |
| 62 | + </ul> |
| 63 | + |
| 64 | + <a href="logout.php">Logout</a> |
| 65 | +</body> |
| 66 | +</html> |
0 commit comments