No sé por qué esto no funciona. Por favor ayúdenme chicos a salir de eso
<form action="login.php" method="post" enctype="multipart/form-data">
<br><br><br>
Select image: <input type="file" name="image" size="40" id="image">
<br><small> must be less than 512kb </small>
<br><br>
<input type="submit" name="submit" value="submit">
</form>
<?php
// Script Error Reporting
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
Hay 3 columnas en la base de datos como id, nombre, imagen como tipo de blob largo
<?php
if(isset($_POST['submit']))
{
$con=@mysqli_connect("localhost","root","","work");
$imagedata=mysqli_real_escape_string($con,file_get_contents($_FILES['image'] ['tmp_name']));
$imagename=mysqli_real_escape_string($con,$_FILES['image'] ['name']);
$imagetype=mysqli_real_escape_string($con,$_FILES['image'] ['type']);
if(substr($imagetype,0,5) =="image")
{
$con=@mysqli_connect("localhost","root","","work");
mysqli_query($con,"INSERT INTO pics VALUES('$imagename','$imagedata')" or die (mysqli_error($con)));
}
else
{
echo"only images are allowed";
}
}
?>
<img src="showimage.php" />
showimage.php
<?php
$con=@mysqli_connect("localhost","root","","work");
$query = mysqli_query($con,"select* from pics" or die (mysqli_error($con)));
$row=mysqli_fetch_assoc($query);
$imagedata= $row["image"];
header("content-type: image/jpeg");
echo $imagedata;
?>
Por favor ayúdenme chicos. No sé qué mal estoy haciendo aquí.
$con
?mysqli_real_escape_string()
es bueno para desinfectar el valor de una variable, pero es mejor y obligatorio usar la declaración mysqli_prepared .images
accept
etiquetas para su archivo de entrada. Agregue esto accept=".jpg, .jpeg, .png"
a su <input type="file"..
. Y agregue una verificación también en su página enviada de PHP para verificar si realmente es una imagen.Puede cambiar su login.php a esto:
<?php
if(isset($_POST['submit']))
{
$con = new mysqli("localhost","root","","work"); /* ESTABLISH CONNECTION */
$uploadedfile = $_FILES["image"]["tmp_name"];
$allowedExts = array("png","jpg","jpeg"); /* ACCEPTED FILE FORMAT */
$filename = $_FILES["image"]["name"]; /* NAME OF THE FILE */
$extension = pathinfo($filename, PATHINFO_EXTENSION); /* GET THE FILE EXTENSION */
$extension = strtolower($extension); /* LOWER THE STRINGS OF THE EXTENSION */
if(in_array($extension,$allowedExts)){ /* IF FILE IS INDEED AN IMAGE */
$path = "images/".$filename; /* DIRECTORY WHERE YOU WANT TO STORE THE IMAGE ALONG WITH THE FILE NAME */
move_uploaded_file($uploadedfile,$path); /* MOVE THE FILE TO YOUR IMAGES FOLDER */
/* PLEASE CHANGE THE NECESSARY TABLE NAME AND COLUMN NAME IN THE QUERY BELOW*/
if($stmt = $con->prepare("INSERT INTO pics (name) VALUES (?)")){
$stmt->bind_param("s",$filename); /* BIND THE FILE NAME TO THE QUERY */
$stmt->execute(); /* EXECUTE THE QUERY */
$stmt->close();
} /* END OF PREPARED STATEMENT */
echo '<img src="images/'.$filename.'">'; /* OUTPUT THE UPLOADED IMAGE */
} /* END OF IF; CHECKING THE ALLOWED EXTENSIONS */
else { /* IF FILE FORMAT IS NOT SUPPORTED */
echo "You did not upload an image.";
} /* END OF ELSE */
} /* END OF ISSET POST SUBMIT */
?>
Nota : No cambié el nombre del archivo, por lo que si un usuario cargó un archivo que tiene el mismo nombre que un archivo anterior, se generará un conflicto. Comprenda este código primero, antes de continuar con el cambio de nombre de los archivos .
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras