Bildergrößen in Zeichen umrechnen

So ich hab jetzt
PHP:
$erfolg = move_uploaded_file(
$_FILES['datei']['tmp_name'],
$_FILES['datei']['name']
);
if ($erfolg){
hinzugefügt.

Jetzt sieht es so aus
PHP:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
include("dbconnect.inc.php");
$id=$_POST['form_id'];
$dateiname=$_FILES['datei']['name'];
$dateigröße=$_FILES['datei']['size'];
$dateityp=$_FILES['datei']['type'];
$erfolg = move_uploaded_file(
$_FILES['datei']['tmp_name'],
$_FILES['datei']['name']
);
if ($erfolg){
$fd = fopen( $_FILES['datei']['name'], "rb" );
if( $fd ) {
  $imageContent = fread( $fd, filesize( $_FILES['datei']['name'] ) );
  fclose( $fd );

if ($dateigröße>153600)
{
header("Location: http://".$_SERVER['HTTP_HOST']
         ."/profil.php?meldung=Ihr Bild ist zu groß. Maximal 150kb");
}
else
{
$sql = "select

         id,
         profilbild,
         name,
         größe,
         typ,
         selbstbild
         from
         profilbild
         where
         id='$id'";

$result = mysql_query($sql) or die(mysql_error());
echo "<p>".$row['id']."".$row['profilbild']."".$row['name']."".$row['größe']."".$row['typ']."".$row['selbstbild']."</p>";
if  (!($row = mysql_fetch_row($result)))
{



$sql = "INSERT INTO profilbild (

         id,
         profilbild,
         name,
         größe,
         typ,
         selbstbild
         )
         values(
         '$id',
         '$imageContent',
         '$dateiname',
         '$dateigröße',
         '$dateityp',
         '".$_POST['form_selbstbild']."'
          )";

mysql_query($sql) or die(mysql_error());
echo "<p>".$row['id']."".$row['profilbild']."".$row['name']."".$row['größe']."".$row['typ']."".$row['selbstbild']."</p>";


header("Location: http://".$_SERVER['HTTP_HOST']
         ."/profil.php?meldung=Ihr Bild wurde gespeichert.");
    }
else
{
$sql = "update profilbild set

         id = '$id',
         profilbild = '$imageContent',
         name = '$dateiname',
         größe = '$dateigröße',
         typ = '$dateityp',
         selbstbild = '".$_POST['form_selbstbild']."'
          where
         id='$id'";

mysql_query($sql) or die(mysql_error());
echo "<p>".$row['id']."".$row['profilbild']."".$row['name']."".$row['größe']."".$row['typ']."".$row['selbstbild']."</p>";


header("Location: http://".$_SERVER['HTTP_HOST']
         ."/profil.php?meldung=Ihr Bild wurde aktualisiert.");
}
}
}
}

Die Fehler in Zeile 35 sind jetzt weg aber dafür das ganze in Zeile 40.
Der Sxntaxfehler bleibt weiterhin bestehen.
 
Du fügst binärdaten (ein bild) in ein SQL Statement ein, ohne sie zu escapen.

mysql_escape_string() sollte abhilfe schaffen.

alternativ kannst du bin2hex() verwenden, und ein 0x vorstellen. In dem fall bleiben dann aber die hochkomma weg.
 
Lass doch einfach die Datei auf deinen Server laden und resize sie einfach selbst auf 800px an der längsten Kante, so wird die Datei noch kleiner und du hast immer einheitliche Bilder.
 
Ok, aber was muss ich alles escapen?

PHP:
$id=$_POST['form_id'];
$dateiname=$_FILES['datei']['name'];
$dateigröße=$_FILES['datei']['size'];
$dateityp=$_FILES['datei']['type'];
$erfolg = move_uploaded_file(
$_FILES['datei']['tmp_name'],
$_FILES['datei']['name']
);
$selbstbild=$_POST['form_selbstbild'];
if ($erfolg){
$fd = fopen( $_FILES['datei']['name'], "rb" );
if( $fd ) {
  $imageContent = fread( $fd, filesize( $_FILES['datei']['name'] ) );
  fclose( $fd );


Ich mein wenn ich es richtig verstanden habe, dann brauch ich das hier:
PHP:
$string = $_REQUEST['string'];
$binary = file_get_contents($_FILE['file']['tmp_name']);

$string = mysql_real_escape_string($string);
$binary_hex = bin2hex($binary);

Aber wo und wie setzte ich das richtig bei mir ein?
Gibts ne Antwort auch für doofe?
 
Zuletzt bearbeitet:
PHP:
$query = "INSERT INTO files (name, file) VALUES('".
          mysql_real_escape_string($_FILE['file']['name']). "', 0x".
          bin2hex(file_get_contents($_FILE['file']['tmp_name'])). "');"
 
Ok ich hab mal ein kleineres Skript geschrieben, nur auf den Bilduplod bezogen. Den Rest versteh ich ja.

Das sieht dann jetzt so aus:
PHP:
include("dbconnect.inc.php");

$erfolg = move_uploaded_file(
$_FILE['datei']['tmp_name'],
$_FILE['datei']['name']
);
if ($erfolg){
$fd = fopen( $_FILE['datei']['name'], "rb" );
if( $fd ) {
  $imageContent = fread( $fd, filesize( $_FILE['datei']['name'] ) );
  fclose( $fd );

if ($dateigröße>153600)
{
header("Location: http://".$_SERVER['HTTP_HOST']
         ."/profil.php?meldung=Ihr Bild ist zu groß. Maximal 150kb");
}
else
{
$sql = "INSERT INTO bilder (name, datei) VALUES('".
          mysql_real_escape_string($_FILE['datei']['name']). "', 0x".
          bin2hex(file_get_contents($_FILE['datei']['tmp_name'])). "');"

$result = mysql_query($sql) or die(mysql_error());
}
}
}

Allerdings bekomm ich jetzt den Fehler:
"Parse error: syntax error, unexpected T_VARIABLE in /var/www/web571/html/bildupload.php on line 25"

Das wäre dann diese hier:
PHP:
$result = mysql_query($sql) or die(mysql_error());

Die hat mir noch nie einen Fehler generiert.

Was hab ich falsch gemacht?
 
Vielen Dank für eure Hilfe und Geduld.
Mit diesem Script funktioniert es jetzt.
PHP:
include("dbconnect.inc.php");
$dateigröße=$_FILES['datei']['size'];

$fd = fopen( $_FILES['datei']['name'], "rb" );
if( $fd ) {
  $imageContent = fread( $fd, filesize( $_FILES['datei']['name'] ) );
  fclose( $fd );

if ($dateigröße>153600)
{
header("Location: http://".$_SERVER['HTTP_HOST']
         ."/profil.php?meldung=Ihr Bild ist zu groß. Maximal 150kb");
}
else
{
$sql = "INSERT INTO bilder (name, datei) VALUES(
          '".mysql_real_escape_string($_FILES['datei']['name'])."',
          0x".bin2hex(file_get_contents($_FILES['datei']['tmp_name'])).");";

$result = mysql_query($sql) or die(mysql_error());
}
}



Also nochmal DANKE
 
Zurück