[PHP] image uit database werkt niet, fout bij uitlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
Het probleem is als volgt:

Ik upload een image van de harde schijf door gebruik te maken van een file-veld. Nothing fancy so far. Ik heb in phpmyadmin al wat plaatje geupload en dit worden prima weergegeven door het volgende script:


PHP: showImg.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php require_once('Connections/localhost.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_getImage = "-1";
if (isset($_GET['id'])) {
  $colname_getImage = $_GET['id'];
}
mysql_select_db($database_localhost, $localhost);
$query_getImage = sprintf("SELECT media_id, media_image, media_mimetype FROM media WHERE media_id = %s", GetSQLValueString($colname_getImage, "int"));
$getImage = mysql_query($query_getImage, $localhost) or die(mysql_error());
$row_getImage = mysql_fetch_assoc($getImage);
$totalRows_getImage = mysql_num_rows($getImage);

header('Content-type: ' . $row_getImage['media_mimetype']);
echo $row_getImage['media_image'];
mysql_free_result($getImage);
?>


standaard dreamweaver bijna, maar kan wel voor dit project.

als ik zelf een image upload in de database met deze code:

PHP: addMedia.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "addMedia")) {
     
  $mimetype = $_FILES['image']['type'];
  $image = file_get_contents($_FILES['image']['tmp_name']);

  $insertSQL = sprintf("INSERT INTO media (media_title, media_content, media_date, media_bron, media_image, media_mimetype) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['title'], "text"),
                       GetSQLValueString($_POST['content'], "text"),
                       GetSQLValueString($_POST['date'], "date"),
                            GetSQLValueString($_POST['bron'], "text"),
                       GetSQLValueString($image, "text"),
                            GetSQLValueString($mimetype, "text"));

  mysql_select_db($database_localhost, $localhost);
  $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());

}


geeft het eerdergenoemde script in firefox "De afbeelding "etc." kan niet worden weergegeven, omdat deze fouten bevat" en komt er geen plaatje in beeld. IE geeft gewoon het bekende kruis voor een ontbrekend plaatje.

In de errorlogs is niets van een fout terug te vinden en ook php errors blijven uit. Eventuele hulp word erg gewaardeerd.

[ Voor 7% gewijzigd door ErwinPeters op 17-08-2011 20:51 ]


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 15:24
Kun je eens de MIME type echo'en? En heeft je afbeelding wel een juiste extensie?

edit: en gebruik idd code=php tags en indenting, dit is echt onleesbaar.

[ Voor 32% gewijzigd door Avalaxy op 17-08-2011 20:36 ]


Acties:
  • 0 Henk 'm!

  • HenkEisDS
  • Registratie: Maart 2004
  • Laatst online: 21-09 01:11
Dit ga ik niet zo lezen. ;) Maak je code eens op met UBB:

Overzicht van UBB-codes


edit: Dan toch lekker niet. :p

[ Voor 94% gewijzigd door HenkEisDS op 17-08-2011 21:07 ]


Acties:
  • 0 Henk 'm!

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
Avalaxy schreef op woensdag 17 augustus 2011 @ 20:33:
Kun je eens de MIME type echo'en? En heeft je afbeelding wel een juiste extensie?

edit: en gebruik idd code=php tags en indenting, dit is echt onleesbaar.
mimetypes had ik geechoed staan als "image/jpeg" en dat werkte ook niet. alleen voor de images die ik met phpmyadmin had geupload. niet voor mijn eigen uploads. overigens staan de mimetypes goed aangegeven in de database. en waren de in phpmyadmin geuploade images al goed.

Het probleem zit hem denk ik in het gebruik van "file_get_contents()" en het gewoon echoen van deze output in showImg.php. ik heb al geexperimenteerd met imagejpeg(), fread() etc, maar helaas zonder wijzigend resultaat. Met imagejpeg blijven de phpmyadmin-uploads overigens ook werken.

yes, zo ziet het er inderdaad veel beter uit :P

[ Voor 27% gewijzigd door ErwinPeters op 17-08-2011 20:46 ]


Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 12-08 21:08
ErwinPeters schreef op woensdag 17 augustus 2011 @ 20:40:
[...]


mimetypes had ik geechoed staan als "image/jpeg" en dat werkte ook niet. alleen voor de images die ik met phpmyadmin had geupload. niet voor mijn eigen uploads. overigens staan de mimetypes goed aangegeven in de database.

yes, zo ziet het er inderdaad veel beter uit :P
En klopt je html code? Vergelijk de output van je afbeelding eens met dezelfde afbeelding gewoon opgeslagen op je server.

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?


Acties:
  • 0 Henk 'm!

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
Dat heb ik gedaan, de html code is correct en de code die de img-tags van de phpmyadmin uploads genereerd is dezelfde al die de de eigen uploads genereerd:

PHP: mediaActueel.php
1
<img width="77px" height="94px" src="showMediaImg.php?id=<?php echo $row_media['media_id']; ?>" alt="<?php echo $row_media['media_title']; ?>"  />


de output bij files uit mijn uploadscript is altijd: "De afbeelding "etc." kan niet worden weergegeven, omdat deze fouten bevat"

[ Voor 21% gewijzigd door ErwinPeters op 17-08-2011 20:55 ]


Acties:
  • 0 Henk 'm!

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Wat ik begrijp is dat je via phpmyadmin afbeeldingen hebt geupload en deze weergeeft en dat dit werkt.
Je probleem moet dus bij het uploaden liggen? Heb je al eens een 'globale' 1 op 1 compare gedaan met een afbeelding die geupload is via phpmyadmin en jouw eigen script. Oftewel is de hele data anders of zijn er af en toe een paar verschillen. Als het aan het uploaden ligt is het dan niet aannemelijk dat het formulier niet klopt? Hoe ziet dat er uit bij jou?

Wat ik nog wel eens regelmatig zie is dat mensen een form attribuut vergeten:
HTML:
1
<form method="post" enctype="multipart/form-data">


Door het encoding type hierop te stellen wordt geen enkel karakter ge-encode. Standaard (zonder specifieren of enctype="text/plain") worden spaties omgezet naar "+" en niet-standaard karakters omgezet naar ASCII HEX.

[ Voor 15% gewijzigd door C0rnelis op 17-08-2011 21:36 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
C0rnelis schreef op woensdag 17 augustus 2011 @ 21:34:

Door het encoding type hierop te stellen wordt geen enkel karakter ge-encode. Standaard (zonder specifieren of enctype="text/plain") worden spaties omgezet naar "+" en niet-standaard karakters omgezet naar ASCII HEX.
Bull. Ja, de enctype moet je opgeven, maar "ASCII HEX" bestaat niet. Dat is gewoon één representatie (lees: weergavemanier) van een zooi bytes.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Wellicht heb ik dat gedeelte iets te letterlijk (of juist niet) van w3c gequote :+

Wat ik nu nog niet kan opmaken is of het probleem nu is opgelost of niet? Als ik de code in OP run dan werkt het bij mij.

[ Voor 5% gewijzigd door C0rnelis op 17-08-2011 22:40 ]


Acties:
  • 0 Henk 'm!

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
nee het werkt nog niet dit is mijn form:

HTML: addMedia.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                                <form method="POST" enctype="multipart/form-data" action="<?php echo $editFormAction; ?>" name="addMedia">
                                <h2>Titel:</h2>
                                <input name="title" value="title" type="text"/><br />
                                <h2>File:</h2>
                                <input type="file" name="image" id="image" />
                                <h2>Inhoud:</h2>
                                <textarea name="content" cols="60" rows="40">content</textarea><br />
                                <h2>Datum:</h2><br />
                                <input name="date" id="demo1" type="text" value="<?php echo(date("m-d-Y",time())); ?>"><img src="images/cal.gif" onClick="javascript:NewCssCal('demo1')" style="cursor:pointer"/><br />
                                <h2>Bron</h2>
                                <input name="bron" id="bron" value="bron" type="text" ><br />
                                <input type="hidden" name="MM_insert" value="add media">
                                <input type="submit" value="toevoegen"><strong>Controleer of ALLE velden zijn ingevuld</strong>
                                <input type="hidden" name="MM_insert" width="100%" value="addMedia">
                                </form>

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
In mijn testcase heb ik enkel 3 kolommen gebruikt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "addMedia")) {
     
  $mimetype = $_FILES['image']['type'];
  $image = file_get_contents($_FILES['image']['tmp_name']);

  $insertSQL = sprintf("INSERT INTO media (media_image, media_mimetype) VALUES (%s, %s)",
                       GetSQLValueString($image, "text"),
                            GetSQLValueString($mimetype, "text"));

  mysql_select_db($database_localhost, $localhost);
  $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());

}
?>

HTML:
1
2
3
4
5
<form action="" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MM_insert" value="addMedia"/>
    <input name="image" type="file"/>
    <input type="submit"/>
</form>


Maak zelf eens een versimpeld formulier en sloop alles eruit behalve deze 3, kijk of dat werkt en voeg dan kolom na kolom toe en kijk of het dan ergens breekt. Ik ben werkelijk 0 problemen tegengekomen. Als ook dat niet werkt, misschien de database? Ik vind het maar vreemd :)

[ Voor 3% gewijzigd door C0rnelis op 18-08-2011 00:29 ]


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
ik heb dat gedaan met resultaat. het plaatje ziet er alleen corrupted uit :(.Afbeeldingslocatie: http://schoutenlegal.nl/showImg.php?id=3

hoe sla jij het in je db op dat? mysql met een blob?

[ Voor 17% gewijzigd door ErwinPeters op 18-08-2011 00:31 ]


  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Ik ging er vanuit dat jij "text" gebruikte voor de kolom media_image op basis van je functie GetSQLValueString, maar "blob" werkt net zo goed.

SQL:
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `media` (
  `media_id` int(11) NOT NULL AUTO_INCREMENT,
  `media_image` text CHARACTER SET utf8 NOT NULL,
  `media_mimetype` text CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`media_id`)
)

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Even misschien een hint : Volgens mij ligt het niet aan je manier van opslaan, maar enkel aan je manier van weergeven...

Als ik namelijk met chrome ga refreshen op http://schoutenlegal.nl/showImg.php?id=3 dan wordt het plaatje wel elke keer op hetzelfde punt corrupt, maar wat er na de corruptie gebeurt is elke keer weer anders. De ene keer is de rest groen, de andere keer is het roze dan weer paars etc. etc.
Valt moeilijk te beschrijven, maar het begin is elke keer gelijk en dan na 25% oid krijgt de corruptie elke refresh een andere vorm..

Nu ik ook wat beter naar je showimg.php kijk, daar zit een enter tussen regel 1 en 2 alhoewel ik dan een warning zou verwachten op regel 44 als dat het probleem was.

[ Voor 13% gewijzigd door Gomez12 op 18-08-2011 00:50 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

C0rnelis schreef op donderdag 18 augustus 2011 @ 00:41:
Ik ging er vanuit dat jij "text" gebruikte voor de kolom media_image op basis van je functie GetSQLValueString, maar "blob" werkt net zo goed.
Blob werkt beter en is hier juist voor bedoeld. Als je images in een text-veld opslaat doe je iets verkeerd. Vergeet niet dat blob voor Binary Large Object staat.

Anyway, kort samengevat: als je images in je database zet en daarbij meer dan één mimetype wil gebruiken sla je naast de image (in een blob ;)) ook het mimetype op in een apart veld. Stomweg een file_get_contents($_FILES['image']['tmp_name']) nemen en die opslaan in dat blobveld zou al genoeg moeten zijn. Bij het uitlezen uit de database netjes een content-type header zetten die overeenkomt met je databaseveld voor het mimetype en verder niets anders echo-en dan de image. Heel belangrijk: geen spaties of enters vóór je <?php-tag en als je je ?>-tag niet overslaat ook geen spaties of enters daarachter. Dat verkloot al snel alles. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
hm, dat kan iets zijn ja. ik ben de code na aant kijken maar kan niets ontdekken. de code voor weergeven staat trouwens in de op. diezelfde code werkt prima voor images die ik in phpmyadmin upload

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Het zit hem zo te zien inderdaad in de overgang tussen regel 1 en 2 zoals Gomez12 al zegt, die had ik gemist.

Er staat een enter achter je ?> en die wordt naar de browser gestuurd. Waarom sluit je je PHP-tag überhaupt daar?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Gomez12 schreef op donderdag 18 augustus 2011 @ 00:46:
Even misschien een hint : Volgens mij ligt het niet aan je manier van opslaan, maar enkel aan je manier van weergeven...

Als ik namelijk met chrome ga refreshen op http://schoutenlegal.nl/showImg.php?id=3 dan wordt het plaatje wel elke keer op hetzelfde punt corrupt, maar wat er na de corruptie gebeurt is elke keer weer anders. De ene keer is de rest groen, de andere keer is het roze dan weer paars etc. etc.
Valt moeilijk te beschrijven, maar het begin is elke keer gelijk en dan na 25% oid krijgt de corruptie elke refresh een andere vorm..

Nu ik ook wat beter naar je showimg.php kijk, daar zit een enter tussen regel 1 en 2 alhoewel ik dan een warning zou verwachten op regel 44 als dat het probleem was.
showImg.php zou het probleem niet mogen zijn, zoals hij al aangeeft werkt het voor afbeeldingen die niet met addmedia.php zijn geupload en werkt het hier lokaal ook zonder problemen.
NMe schreef op donderdag 18 augustus 2011 @ 00:50:
[...]

Blob werkt beter en is hier juist voor bedoeld. Als je images in een text-veld opslaat doe je iets verkeerd. Vergeet niet dat blob voor Binary Large Object staat.
Ik weet, ik probeerde alleen na te gaan wat Erwin gebruikte :)

Ik kan me niet voorstellen dat een enter na de ?> een probleem vormt als daar direct een <?php op volgt.

PHP: werkt
1
2
3
4
5
6
7
<?php

$localhost = mysql_connect("localhost", "root", "");

?>
<?php
if (!function_exists("GetSQLValueString")) {


PHP: werkt niet
1
2
3
4
5
6
7
8
<?php

$localhost = mysql_connect("localhost", "root", "");

?>

<?php
if (!function_exists("GetSQLValueString")) {


Aangezien de bovenste gebruikt wordt, ligt het hier echt niet aan.

[ Voor 15% gewijzigd door C0rnelis op 18-08-2011 00:59 ]


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
ik heb de code in showImg.php aangepast maar er is om de reden die C0rnelis beschrijft geen verandering in de resultaten. het moet in het schijven of opslaan van de images zitten, de andere images die ik met phpmyadmin upload geeft die code al de hele tijd prima weer.

Ik heb de code van C0rnelis getest en ook die geeft corrupted images. zou dit iets kunnen zijn dat bij de host zit?

[ Voor 26% gewijzigd door ErwinPeters op 18-08-2011 01:01 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
ErwinPeters schreef op donderdag 18 augustus 2011 @ 00:57:
ik heb de code in showImg.php aangepast maar er is geen verandering in de resultaten. het moet in het schijven of opslaan van de images zitten, de andere images die ik met phpmyadmin upload geeft die code al de hele tijd prima weer.
Ga dan eens je settings / logs nakijken of daar niet iets instaat.

Je hoort afaik standaard simpelweg een warning/error te krijgen op regel 44 van showimg.php vanwege regel 1/2.

Als je daar geen warning/error op krijgt dan onderdruk je of je errors of je doet iets anders wat je niet vermeld...
C0rnelis schreef op donderdag 18 augustus 2011 @ 00:53:
[...]
showImg.php zou het probleem niet mogen zijn, zoals hij al aangeeft werkt het voor afbeeldingen die niet met addmedia.php zijn geupload en werkt het hier lokaal ook zonder problemen.
Ik zit me even af te vragen wat hier lokaal betekent, ik zou showimg.php namelijk nooit hier lokaal aan de praat krijgen, aangezien ik op regel 1 al een error zou krijgen omdat ik geen connections/localhost.php heb...

Paste die localhost.php ook eens hier anders... of gooi die error_reporting redirective eens 1 regel hoger... Als ik 1 enter fout zie dan word ik altijd heel erg achterdochtig op meerdere enter fouten...

[ Voor 36% gewijzigd door Gomez12 op 18-08-2011 01:10 ]


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
PHP: showImg.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php require_once('Connections/localhost.php'); 
error_reporting(-1);

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_getImage = "-1";
if (isset($_GET['id'])) {
  $colname_getImage = $_GET['id'];
}
mysql_select_db($database_localhost, $localhost);
$query_getImage = sprintf("SELECT * FROM images WHERE image_id = %s", GetSQLValueString($colname_getImage, "int"));
$getImage = mysql_query($query_getImage, $localhost) or die(mysql_error());
$row_getImage = mysql_fetch_assoc($getImage);
$totalRows_getImage = mysql_num_rows($getImage);

header('Content-type: ' . $row_getImage['mimetype']);
echo $row_getImage['image'];
mysql_free_result($getImage);
?>


dit is toch echt alle code, en nee, geen errors. ik onderdruk ook niets met een .htaccess oid

  • Aloys
  • Registratie: Juni 2005
  • Niet online
C0rnelis schreef op donderdag 18 augustus 2011 @ 00:53:

Ik kan me niet voorstellen dat een enter na de ?> een probleem vormt als daar direct een <?php op volgt.

PHP: werkt
1
2
3
4
5
6
7
<?php

$localhost = mysql_connect("localhost", "root", "");

?>
<?php
if (!function_exists("GetSQLValueString")) {


PHP: werkt niet
1
2
3
4
5
6
7
8
<?php

$localhost = mysql_connect("localhost", "root", "");

?>

<?php
if (!function_exists("GetSQLValueString")) {


Aangezien de bovenste gebruikt wordt, ligt het hier echt niet aan.
Ehm, het lijkt mij dat er gewoon een line-break wordt doorgestuurd, want alles buiten de php-tags wordt als plain text gestuurd.

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Foutmeldingen in showimg zul je niet te zien krijgen omdat je een contenttype meegeeft van een afbeelding. Zonder contenttype mee te geven zul je wel eventuele foutmeldingen te zien krijgen (en een hoop rare tekens). Wellicht dat er ergens een notice of een error wordt geoutput.

Verder heb je in je html-formulier 2x 'MM_insert' met een andere waarde.

En ik weet ook niet wat je 'escape'-methode doet met die images aangezien hij stripslashes en mysql_real_escape_string doet op een stuk non-tekst.. Ik kan niet zeggen dat daar de fout zit verder.

Het is een best practice om afbeeldingen niet op te slaan in je database (hoewel het wel kan), maar alleen een verwijzing naar de locatie waar de afbeelding staat. (Dus website.nl/images/15.jpg wordt dan images/15.jpg of zelfs alleen 15.jpg)

[ Voor 3% gewijzigd door krvabo op 18-08-2011 01:12 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
you are a gentleman and a scholar. het resultaat ziet er nu zo uit:
Afbeeldingslocatie: http://www.schoutenlegal.nl/showMediaImg.php?id=15

wat ik slechts tot vanavond online kan laten staan. maar hij nog niet helemaal ok. er zit nog ergens iets dat roet in het eten gooit :S

PHP: test2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
require_once("Connections/localhost.php");

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "addMedia")) {
     
  $mimetype = $_FILES['image']['type'];
  $image = file_get_contents($_FILES['image']['tmp_name']);

  $insertSQL = sprintf("INSERT INTO media (media_image, media_mimetype) VALUES (%s, %s)",
                       $image,
                            $mimetype);

  mysql_select_db($database_localhost, $localhost);
  $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MM_insert" value="addMedia"/>
    <input name="image" type="file"/>
    <input type="submit"/>
</form>
</body>
</html>

[ Voor 71% gewijzigd door ErwinPeters op 18-08-2011 01:20 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
krvabo schreef op donderdag 18 augustus 2011 @ 01:10:
Foutmeldingen in showimg zul je niet te zien krijgen omdat je een contenttype meegeeft van een afbeelding. Zonder contenttype mee te geven zul je wel eventuele foutmeldingen te zien krijgen (en een hoop rare tekens). Wellicht dat er ergens een notice of een error wordt geoutput.
Tijd lang geen php meer gedaan, maar afaik vind error logging plaats voor alles, dus ook voor het uitsturen van de contenttype
En ik weet ook niet wat je 'escape'-methode doet met die images aangezien hij stripslashes en mysql_real_escape_string doet op een stuk non-tekst.. Ik kan niet zeggen dat daar de fout zit verder.
Stripslashes is idd erg twijfelachtig, maar mysql_real_escape_string is verplicht bij binary data.
Het is een best practice om afbeeldingen niet op te slaan in je database (hoewel het wel kan), maar alleen een verwijzing naar de locatie waar de afbeelding staat. (Dus website.nl/images/15.jpg wordt dan images/15.jpg of zelfs alleen 15.jpg)
Totaal andere discussie, maar laat ik hier geen flamewar starten :)

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
ErwinPeters schreef op donderdag 18 augustus 2011 @ 01:18:
[...]
you are a gentleman and a scholar. het resultaat ziet er nu zo uit:
[afbeelding]

wat ik slechts tot vanavond online kan laten staan. maar hij nog niet helemaal ok. er zit nog ergens iets dat roet in het eten gooit :S
Ik wil niet heel vervelend zijn, maar ik zie hier op chrome geen verschil tussen http://www.schoutenlegal.nl/showMediaImg.php?id=15 en http://schoutenlegal.nl/showImg.php?id=4

het ziet er hier allebei uit als :
Voorbeeld

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
je hebt gelijk, geen vooruitgang zie ik nu. ik heb wel de header even weggehaald en dit is het resultaat met error_reporting(-1);

PHP: showMediaImg.php?id=15
1
ÿØÿàJFIFÿÛC      ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ=~"ÿÄÿÄ:!12AQaq¡"&#8216;Á±Ñ#3BáRS4br&#8218;&#8217;ðñÿÄÿÄ+!1AQaq¡ð&#8216;ÁÑ"᱁ÿÚ?ïz·:±¯|B ÷²H£å&#8221; ýÀ×4IïSäI«® ü0&#732;&#8222;cŒÞ;½êIZœaÂ@E?¬êÍ ÐMs%šZ;cHӸǝKÀœÂûGp¦&ò'&#8216;ûâ&#8250;ð»;K&#710;åë;+ìCžXցš$ŜIbë^6!rۏöÅ]Eæò>£"Ûh OÕmHS`DóÜRØâ&#8217; &#402;¨Ó$mŸB m &#8226;g&#8218;9&#8220;²êRÈAuºÆ!¸Pá»&#8221;&#8216;¸5B¬kØ&#8221;/ý/Ŝ? áSkI#hóÈ¡k&#8222;®DÅüóZ·¤¶Câ"¹QýA¥½G/oÒ&#8220;|8ðçM#cå€9¤Ïæ»[&#8482;áënºÀ+&#8216;ß·æ ·&#8224;!àÚyʬÓå&#8211;&#710;$ÒôŽ&#8249;X­î5DaÈIj]Î~aÏê(I¸sÀÀ8Ruu9VF´7|-­òñj&#8217;.ñÍ&#8212;÷ô*&#8222;T*¯#îÈÍò·Ÿ&#8216;ógVA|G&#8216;á¤o[»FÛ¤üYm"¼ŒÛ˳ŒvOs1^þDÂgÛbqÞäyŒn>´l0Ã%Ê)&#8226;ÄLt&#8217;¤jBygn]Ùóî§#&#402;Ʀ2³Iü¼nq¾GwÓÐVÖu(g§O.+;Ø&#8222;º¢¦Ç^¿ÑcƳ©2&#732;&#732;&#8218;àç&#8221;2Žñà7CåZ> w%űŜãþ"¡óßçíí dš[|¸Ï&#8212;"®&#8225;&#8225;¬7rK&¢[8ù¹nvçµhD~ÞyòxTiÒ®»×ðÏÕ®§îÍ)Ŝ{&#8240;%Ъ SóeiàæJâ8È'H'&#8482;¤vܼœÆýl ¨n|O¹ûTJŜӁyŜ¬×VòàÆgA¦0Ø$*àÝãßVßÝ3Eh5`ȥخ܀ýý©rù-&#8211;Ñm$U2j,P½N32ÅÄ*~XbT¯äVU)Ä´¥æ: xžÚª&#8211;B&#8211;8öp»0Ëu²cXÈÖw|cÏúÔiåêi$iöQÈ=Â&#8226;4ÁXžÏ*oÀ&#8226;$2ÞJF ØŒ&#8220;öüÖfóÙ[Ìw$Íúyƨö-,ŽCî¸e&#8226;ã&#8217;âFÐtí!Ïß5JHùræQ~C&#8220;èwõÅ6ìrÇ̝Í9âÍð"ÖÔãQ#WžIûâ¬&#8230;8áueD  ùÀ{Ô&#8212;&#8225;ôÓ>|öªuŒ€RNÀ+1'è+±Ü̽dGZa¹¸:&#8224;Ãm÷ç>üÈ{0¡lø°öÍ÷MspÅÍ3?S·â¤ŸY,g%J°¾&#8212;§, ºSMϵ&#8220;&#8217;K,&#8220;+îëþõÙnDØ&#8216;ŽœF¹ÐJ&#8218;q&#8217;võöªIá¯)T¾&#8220;I;b#°õô ä~]&#732;ö|3Nêi*JTNb"ò`kHÛip&#8240;M­}(øæÁ&#8211;šEfØaÈÓïõ¢#&#8211;yÜk&#8224;&#8216;òÚVR1î* {€Ò>¿ãU©+Zµè*©`1;&#8220;¶0=qBKŽ&#8216;$Á$&#8250;è4t)€Ø< u:š#â§Ž!!šVuqÖ;Cn{ŜiÂ:ÇididuPærryžJÍ&#8249;&#8226;Á^å­w€ÛØÄŒ0äjoS½W§Y*&#732;Þ#Øô:ÂZ #^ÿå*ék

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik heb het niet grondig gelezen, dus alvast excuses.
Maar volgens mij heb ik dit ook gehad, en moet je je geheugeninstellingen goed zetten.
max_memory_limit ofzo en
ini_set("mssql.textlimit", "2147483647");
ini_set("mssql.textsize", "2147483647");

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
gewoon in de php of htaccess? ik ben onbekend met wat je nu post. waar zou ik dit neer zetten?

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Gomez12 schreef op donderdag 18 augustus 2011 @ 01:19:
[...]

Tijd lang geen php meer gedaan, maar afaik vind error logging plaats voor alles, dus ook voor het uitsturen van de contenttype
Error _logging_ wel, error _reporting_ niet.
Totaal andere discussie, maar laat ik hier geen flamewar starten :)
Daar heb je gelijk in, op beide punten.
Gomez12 schreef op donderdag 18 augustus 2011 @ 01:24:
[...]

Ik wil niet heel vervelend zijn, maar ik zie hier op chrome geen verschil tussen http://www.schoutenlegal.nl/showMediaImg.php?id=15 en http://schoutenlegal.nl/showImg.php?id=4

het ziet er hier allebei uit als :
[afbeelding]
Dat komt wellicht omdat hij showimg heeft aangepast (weet ik niet), waardoor dan natuurlijk alle afbeeldingen die er al inzitten hetzelfde er uit komen te zien.
ErwinPeters schreef op donderdag 18 augustus 2011 @ 01:29:
je hebt gelijk, geen vooruitgang zie ik nu. ik heb wel de header even weggehaald en dit is het resultaat met error_reporting(-1);

PHP: showMediaImg.php?id=15
1
ÿØÿàJFIFÿÛC      ' *ék
Error_reporting moet niet op -1 maar doe dit:

PHP:
1
error_reporting(E_ALL);

[ Voor 17% gewijzigd door krvabo op 18-08-2011 01:35 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
met:

ini_set("mssql.textlimit", "2147483647");
ini_set("mssql.textsize", "2147483647");

in test2.php op regel 4 en 5 geeft hij dit als ik de form submit.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Het ligt overigens 100% zeker niet aan showImg.php of zijn kopie showMediaImg.php

[ Voor 11% gewijzigd door ErwinPeters op 18-08-2011 01:41 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
krvabo schreef op donderdag 18 augustus 2011 @ 01:33:
Error_reporting moet niet op -1 maar doe dit:

PHP:
1
error_reporting(E_ALL);
Dat hangt er van af of je strict ook wil; E_ALL is namelijk niet "all" (lekker PHP eigenaardigheidje)
E_ALL (integer) All errors and warnings, as supported, except of level E_STRICT.
Met -1 zet je alle bits hoog en dus alle flags.
ErwinPeters schreef op donderdag 18 augustus 2011 @ 01:35:
ini_set("mssql.textlimit", "2147483647");
ini_set("mssql.textsize", "2147483647");
[...]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
En je hebt verder niets veranderd dan deze twee statements toegevoegd :? Want ik zie even niet hoe dit een SQL syntax error zou moeten veroorzaken.
Tenzij er misschien een hele kleine waarde als "20" gebruikt zou worden waardoor een query na 20 tekens afgekapt zou worden o.i.d.

[ Voor 38% gewijzigd door RobIII op 18-08-2011 01:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Een wijziging in MSSQL-settings gaat niet ineens je MySQL-query's verkloten, dat gaat er bij my niet in. :)

Sowieso: als lengte een probleem is dan moet je kijken naar de grotere blob-datatypes die MySQL biedt, niet naar ini-settings.

[ Voor 35% gewijzigd door NMe op 18-08-2011 03:21 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
dat is in ieder geval is dat de error die ik kreeg. ik heb er ook verder niets meer mee gedaan.

ik probeer nu een file-upload op de server ipv in de database maar ik heb hier helaas ook niet veelgeluk mee. ik wil dit nog steeds opgelost hebben maar wil eerst even iets functioneels neerzetten.

[ Voor 51% gewijzigd door ErwinPeters op 18-08-2011 03:22 ]


  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Gomez12 schreef op donderdag 18 augustus 2011 @ 01:01:
[...]

Ga dan eens je settings / logs nakijken of daar niet iets instaat.

Je hoort afaik standaard simpelweg een warning/error te krijgen op regel 44 van showimg.php vanwege regel 1/2.

Als je daar geen warning/error op krijgt dan onderdruk je of je errors of je doet iets anders wat je niet vermeld...


[...]

Ik zit me even af te vragen wat hier lokaal betekent, ik zou showimg.php namelijk nooit hier lokaal aan de praat krijgen, aangezien ik op regel 1 al een error zou krijgen omdat ik geen connections/localhost.php heb...

Paste die localhost.php ook eens hier anders... of gooi die error_reporting redirective eens 1 regel hoger... Als ik 1 enter fout zie dan word ik altijd heel erg achterdochtig op meerdere enter fouten...
Lokaal betekent in mijn eigen lokale xampp-server. En ja ik heb connections/localhost.php niet gebruikt zoals ook te zien is uit de geposte code snippet

PHP:
1
2
3
4
5
6
7
<?php 

$localhost = mysql_connect("localhost", "root", ""); 

?>
<?php 
if (!function_exists("GetSQLValueString")) {
ErwinPeters schreef op donderdag 18 augustus 2011 @ 00:57:
ik heb de code in showImg.php aangepast maar er is om de reden die C0rnelis beschrijft geen verandering in de resultaten. het moet in het schijven of opslaan van de images zitten, de andere images die ik met phpmyadmin upload geeft die code al de hele tijd prima weer.

Ik heb de code van C0rnelis getest en ook die geeft corrupted images. zou dit iets kunnen zijn dat bij de host zit?
Als je je host verdenkt, waarom test je het dan niet even met xampp/lamp/wamp/..
ErwinPeters schreef op donderdag 18 augustus 2011 @ 01:06:
PHP: showImg.php
1
2
3
4
<?php require_once('Connections/localhost.php'); 
error_reporting(-1);
[..]
?>


dit is toch echt alle code, en nee, geen errors. ik onderdruk ook niets met een .htaccess oid
Volgens mij bedoelde Gomez juist de inhoud van Connections/localhost.php én of je error_reporting boven/voor de require wilde zetten.

  • ErwinPeters
  • Registratie: Februari 2010
  • Laatst online: 28-03-2024
ook dat levert helaas geen andere resultaten op
Pagina: 1