treshr
asked on
PHP upload script with MySQL
Hello, I've made an upload script for uploading my images to a database. But in soem strange way it fails. This is my code:
CImageUpload.php
[code]
<?
/**
* Image Upload Class
*
* @author Sander Stad <swstad@xs4all.nl>
* @version 0.1
* @copyright Sander Stad
**/
// Importeren van de code van de class CDatabase.
include("classes/CDatabase .php");
class CImageUpload{
/**
* @var $photoFileName De naam van de afbeelding
* @var $photoFileSize De grootte van de afbeelding
* @var $acceptedExtension Array met de toegelaten extensies
* @var $fileNameParts Data van de verschillende stukken afbeelding url
* @var $fileExtension De extensie van de afbeelding
* @var $tempFileName De locatie van het tijdelijke bestand
* @var $photoOriginal De afbeelding opnieuw gegenereerd
* @var $photoThumbNail De afbeelding naar een miniatuur gemaakt
* @var $tempFile Tijdelijk locatie voor het opslaan van de afbeelding
* @var $srcImage De bron waaruit de afbeelding wordt geladen
* @var $binaryPhoto De ingelezen data van de afbeelding
* @var $binaryThumbNail De ingelezen data van de miniatuur
**/
var $photoFileName; // naam van de foto
var $photoFileSize; // grootte van de foto
var $acceptedExtension = array("jpg", "jpeg"); // array van de toegestane extensies
var $fileNameParts = ""; // data van de verschillende stukken van de foto string
var $fileExtension = ""; // de extensie van het foto bestand
var $tempFileName; // de tijdelijke locatie op de server van het bestand
var $photoOriginal; // de data van de originele foto
var $photoThumbnail; // de verkleinde versie van de originele foto
var $tempFile; // tijdelijk bestand voor het inladen van de foto
var $srcImage; // de bron van de foto
var $binaryPhoto; // de ingelezen data van de foto
var $binaryThubmNail; // binaire versie van de thumbnail
/**
* Dit is de constructor van deze class. In deze constructor worden een
* aantal belangrijke variabelen voorzien van waardes van de parameters.
* In deze cinstructor worden ook de methodes uitgevoerd die nodig zijn
* voor de balangrijke checks van het geuploade bestand en om het uit-
* eindelijke afbeeldingsbestand te maken met de miniatuur.
*
* @param string $fileName Naam van de afbeelding
* @param string $fileSize Grootte van de afbeelding
* @param string $tempName De tijdelijke locatie van de afbeelding
**/
function CImageUpload($fileName, $fileSize, $tempName){
$this->photoFileName = $fileName;
$this->photoFileSize = $fileSize;
$this->tempFileName = $tempName;
}
/**
* Deze functie scheidt de extensie van de bestandsnaam, zet de
* extensie in een variabele.
* Dan wordt er een if statement aangeroepen waarmee gekeken wordt
* of de desbetreffende extensie toegestaan is.
* Zo ja dan wordt er een 1 (goed) terug gegeven en anders wordt er
* een fout gegeven.
*
* @return integer Betekent dat alles goed is gegaan
* @return string Betekent dat er iets niet goed is gegaan.
**/
function clsCheckExtension(){
$this->fileNameParts = explode(".", $this->photoFileName); // haal alles weg van de string voor de "."
$this->fileExtension = end($this->fileNameParts); // haal uit het einde van de array de uiteinelijke extensie
// checken of de desbetreffende extensie toegestaan is
if( !in_array(strtolower($this ->fileExte nsion), $this->acceptedExtension)) {
die ("deze extensie is niet toegestaan");
} else{
return 1;
}
}
/**
* Functie om de extensie van het bestand terug te geven
*
* @return string $fileExtension De extensie van het geuploadde bestand
**/
function clsReturnFileExtension(){
return $this->fileExtension;
}
/**
* Functie voor het teruggeven van de naam van het bestand.
* Er handig om even te kijken of de class wel goed geinitialseerd is
*
* @return string De naam van het bestand
**/
function clsReturnImageFileName(){
return $this->photoFileName;
}
/**
* Functie om de locatie van het tijdelijke bestand op te halen
*
* @return string Locatie van het tijdelijke bestand op de server
**/
function clsReturnTempImageLocation (){
return $this->tempFileName;
}
/**
* Deze method kijkt of het bestand niet te groot is.
* Doormiddel van een if statement wordt gekeken of de
* grootte van de foto geen 0 is en of de foto niet groter
* is dan 2000000 bytes
*
* @return integer Als alles goed is gegaan komt er een 1 terug
* @return string Er is iets fout gegaan. Dit kan of zijn dat er
* geen data is of dat het bestand te groot is
**/
function clsCheckSize(){
if($this->photoFileSize == 0){
return "NO_IMAGE_DATA_FAILURE";
} elseif($this->photoFileSiz e > 2000000){
return "TOO_MUCH_IMAGE_DATA_FAILU RE";
} else{
return 1;
}
}
/**
* Deze methode leest het tijdelijke bestand van de server
* maakt er een afbeeldings bestand van.
*
* @return string De compilatie van de foto is mislukt
**/
function clsCreatePhoto(){
// openen van het tijdelijke bestand op de server in "READ" status
$this->tempFile = fopen($this->tempFileName, "r");
// het inlezen van het binary bestand op de server
$this->binaryPhoto = fread($this->tempFile, filesize($this->tempFileNa me));
// als er iets fout gaat dan wordt er een error gegeven
$old_error_reporting = error_reporting(E_ALL & ~ (E_WARNING));
// het terugzetten van de afbeelding data vanuit een string
$this->srcImage = imagecreatefromstring($thi s->binaryP hoto);
// mocht er een error zijn, geef dan een error
error_reporting($old_error _reporting );
// als er iets fout is gegaan in het terug zetten van het bestand
// dan wordt er een interne foutmelding gegeven in dit script
if(!$this->srcImage){
return "CORRUPT_IMAGE_DATA_FAILUR E";
} else{
$this->originalPhoto = $this->srcImage;
}
}
/**
* Deze functie geeft de data van de photo terug. Op deze manier kan de photo
* naar een ander PHP bestand gekopieerd worden om daar bijvoorbeeld naar de
* database te kopieren.
*
* @return byte De afbeelding die opnieuw in elkaar is gezet
**/
function clsGetPhoto(){
$this->originalPhoto;
}
/**
* Deze methode verkleind de originele foto naar een thunmbail
* zodat mensen niet gelijk een lelijke afbeelding zien of veel
* te lang moeten wachten tot eindelijk de foto verschijnt.
**/
function clsCreateThumbNail(){
$imageWidth = imagesx($this->srcImage); // verkrijgen van de breedte van de foto
$imageHeight = imagesy($this->srcImage); // verkrijgen van de hoogte van de foto
$sizeFactor = 0; // de factor waarmee de originele photo vermenigvuldigd wordt
$maxHeight = 100;
$maxWidth = 100;
// hier wordt gecontroleerd welke factor er gebruikt moet worden
// om een afbeelding zo te verkleinen dat het allemaal qua
// proporties gaat.
if(($imageHeight > $maxHeight) || ($imageWidth > $maxWidth)) {
// als de hoogte groter is dan de breedte
if($imageHeight > $maxHeight) {
// dan wordt de hoogte gebruikt om aan de $max te komen
$sizeFactor = (double) ($maxHeight / $imageHeight);
} else{
// anders wordt de breedte gebruikt om tot de $max te komen
$sizeFactor = (double) ($maxWidth / $imageWidth) ;
}
}
// het instellen van de nieuwe hoogte en breedte
$newWidth = (int) ($imageWidth * $sizeFactor);
$newHeight = (int) ($imageHeight * $sizeFactor);
// maken van de uiteindelijke thumbnail
$destImage = imagecreate($newWidth, $newHeight); // de variabele waar de afbeelding even in geladen wordt
imagecopyresized($destImag e, $this->srcImage, 0, 0, 0, 0, $newWidth, $newHeight, $imageWidth, $imageHeight);
ob_start(); // starten van het opvangen van de data
imagejpeg($destImage); // wegschrijven de data naar een bestand of browser
$this->photoThumbNail = ob_get_contents(); // the raw data van de jpeg
ob_end_clean(); // leegmaken van de std out zodat andere output niet fout gaat
}
/**
* Deze functie geeft de waarde van de net gegenereerde miniatuur terug.
* Zo kun je gemakkelijk de waardes doorgeven aan andere classes.
*
* @return byte De miniatuur van de afbeelding
**/
function clsGetThumbNail(){
return $this->photoThumbNail;
}
/**
* Deze functie voert de uiteindelijke opdracht uit om de photo naar de database te
* kopieren.
*
* @param $title De titel van de afbeelding
* @param $photo De afbeelding die geupload moet worden
* @param $thumbNail De miniatuur die geupload moet worden
* @param $userId Het gebruikers ID van degene die mag uploaden
* @param $userName De gebruikersnaam voor de database server
* @param $userPass Het wachtwoord voor de database server
* @param $hostName De hostnaam van de database server
* @param $database De database waar hetgeen naar geupload moet worden
**/
function clsWriteToDatabase($title, $userId, $userName, $userPass, $hostName, $database){
$query = "INSERT INTO photo(title, thumbnail, original, user_id) " .
"VALUES('$title', '$this->photoThumbNail', '$this->originalPhoto', '$userId');"; // query opzetten
$query2 = "INSERT INTO photo2(kolom1, kolom2) VALUES('$this->photoThumbN ail', '$this->originalPhoto');";
echo "$query2";
// Uitvoeren van de constructor van de class CDatabase
$dbase = new CDatabase($hostName, $userName, $userPass, $database, $query2);
}
}
?>
[/code]
CDatabase.php
[code]
<?
/**
* Database Class
*
* @author Sander Stad <swstad@xs4all.nl>
* @version 0.1
* @copyright Sander Stad
**/
class CDatabase{
function CDatabase($host, $user, $pass, $dbase, $query){
$connection = mysql_connect($host, $user, $pass);
mysql_select_db($dbase, $connection);
mysql_query($query);
mysql_close($connection);
echo "Uitvoeren van de query is geslaagd";
}
function clsExecuteQuery(){
$connection = mysql_connect($host, $user, $pass);
mysql_select_db($dbase, $connection);
mysql_query($query);
}
function clsClose(){
mysql_close($this->connect ion);
}
}
?>
[/code]
CImageUpload.php
[code]
<?
/**
* Image Upload Class
*
* @author Sander Stad <swstad@xs4all.nl>
* @version 0.1
* @copyright Sander Stad
**/
// Importeren van de code van de class CDatabase.
include("classes/CDatabase
class CImageUpload{
/**
* @var $photoFileName De naam van de afbeelding
* @var $photoFileSize De grootte van de afbeelding
* @var $acceptedExtension Array met de toegelaten extensies
* @var $fileNameParts Data van de verschillende stukken afbeelding url
* @var $fileExtension De extensie van de afbeelding
* @var $tempFileName De locatie van het tijdelijke bestand
* @var $photoOriginal De afbeelding opnieuw gegenereerd
* @var $photoThumbNail De afbeelding naar een miniatuur gemaakt
* @var $tempFile Tijdelijk locatie voor het opslaan van de afbeelding
* @var $srcImage De bron waaruit de afbeelding wordt geladen
* @var $binaryPhoto De ingelezen data van de afbeelding
* @var $binaryThumbNail De ingelezen data van de miniatuur
**/
var $photoFileName; // naam van de foto
var $photoFileSize; // grootte van de foto
var $acceptedExtension = array("jpg", "jpeg"); // array van de toegestane extensies
var $fileNameParts = ""; // data van de verschillende stukken van de foto string
var $fileExtension = ""; // de extensie van het foto bestand
var $tempFileName; // de tijdelijke locatie op de server van het bestand
var $photoOriginal; // de data van de originele foto
var $photoThumbnail; // de verkleinde versie van de originele foto
var $tempFile; // tijdelijk bestand voor het inladen van de foto
var $srcImage; // de bron van de foto
var $binaryPhoto; // de ingelezen data van de foto
var $binaryThubmNail; // binaire versie van de thumbnail
/**
* Dit is de constructor van deze class. In deze constructor worden een
* aantal belangrijke variabelen voorzien van waardes van de parameters.
* In deze cinstructor worden ook de methodes uitgevoerd die nodig zijn
* voor de balangrijke checks van het geuploade bestand en om het uit-
* eindelijke afbeeldingsbestand te maken met de miniatuur.
*
* @param string $fileName Naam van de afbeelding
* @param string $fileSize Grootte van de afbeelding
* @param string $tempName De tijdelijke locatie van de afbeelding
**/
function CImageUpload($fileName, $fileSize, $tempName){
$this->photoFileName = $fileName;
$this->photoFileSize = $fileSize;
$this->tempFileName = $tempName;
}
/**
* Deze functie scheidt de extensie van de bestandsnaam, zet de
* extensie in een variabele.
* Dan wordt er een if statement aangeroepen waarmee gekeken wordt
* of de desbetreffende extensie toegestaan is.
* Zo ja dan wordt er een 1 (goed) terug gegeven en anders wordt er
* een fout gegeven.
*
* @return integer Betekent dat alles goed is gegaan
* @return string Betekent dat er iets niet goed is gegaan.
**/
function clsCheckExtension(){
$this->fileNameParts = explode(".", $this->photoFileName); // haal alles weg van de string voor de "."
$this->fileExtension = end($this->fileNameParts);
// checken of de desbetreffende extensie toegestaan is
if( !in_array(strtolower($this
die ("deze extensie is niet toegestaan");
} else{
return 1;
}
}
/**
* Functie om de extensie van het bestand terug te geven
*
* @return string $fileExtension De extensie van het geuploadde bestand
**/
function clsReturnFileExtension(){
return $this->fileExtension;
}
/**
* Functie voor het teruggeven van de naam van het bestand.
* Er handig om even te kijken of de class wel goed geinitialseerd is
*
* @return string De naam van het bestand
**/
function clsReturnImageFileName(){
return $this->photoFileName;
}
/**
* Functie om de locatie van het tijdelijke bestand op te halen
*
* @return string Locatie van het tijdelijke bestand op de server
**/
function clsReturnTempImageLocation
return $this->tempFileName;
}
/**
* Deze method kijkt of het bestand niet te groot is.
* Doormiddel van een if statement wordt gekeken of de
* grootte van de foto geen 0 is en of de foto niet groter
* is dan 2000000 bytes
*
* @return integer Als alles goed is gegaan komt er een 1 terug
* @return string Er is iets fout gegaan. Dit kan of zijn dat er
* geen data is of dat het bestand te groot is
**/
function clsCheckSize(){
if($this->photoFileSize == 0){
return "NO_IMAGE_DATA_FAILURE";
} elseif($this->photoFileSiz
return "TOO_MUCH_IMAGE_DATA_FAILU
} else{
return 1;
}
}
/**
* Deze methode leest het tijdelijke bestand van de server
* maakt er een afbeeldings bestand van.
*
* @return string De compilatie van de foto is mislukt
**/
function clsCreatePhoto(){
// openen van het tijdelijke bestand op de server in "READ" status
$this->tempFile = fopen($this->tempFileName,
// het inlezen van het binary bestand op de server
$this->binaryPhoto = fread($this->tempFile, filesize($this->tempFileNa
// als er iets fout gaat dan wordt er een error gegeven
$old_error_reporting = error_reporting(E_ALL & ~ (E_WARNING));
// het terugzetten van de afbeelding data vanuit een string
$this->srcImage = imagecreatefromstring($thi
// mocht er een error zijn, geef dan een error
error_reporting($old_error
// als er iets fout is gegaan in het terug zetten van het bestand
// dan wordt er een interne foutmelding gegeven in dit script
if(!$this->srcImage){
return "CORRUPT_IMAGE_DATA_FAILUR
} else{
$this->originalPhoto = $this->srcImage;
}
}
/**
* Deze functie geeft de data van de photo terug. Op deze manier kan de photo
* naar een ander PHP bestand gekopieerd worden om daar bijvoorbeeld naar de
* database te kopieren.
*
* @return byte De afbeelding die opnieuw in elkaar is gezet
**/
function clsGetPhoto(){
$this->originalPhoto;
}
/**
* Deze methode verkleind de originele foto naar een thunmbail
* zodat mensen niet gelijk een lelijke afbeelding zien of veel
* te lang moeten wachten tot eindelijk de foto verschijnt.
**/
function clsCreateThumbNail(){
$imageWidth = imagesx($this->srcImage); // verkrijgen van de breedte van de foto
$imageHeight = imagesy($this->srcImage); // verkrijgen van de hoogte van de foto
$sizeFactor = 0; // de factor waarmee de originele photo vermenigvuldigd wordt
$maxHeight = 100;
$maxWidth = 100;
// hier wordt gecontroleerd welke factor er gebruikt moet worden
// om een afbeelding zo te verkleinen dat het allemaal qua
// proporties gaat.
if(($imageHeight > $maxHeight) || ($imageWidth > $maxWidth)) {
// als de hoogte groter is dan de breedte
if($imageHeight > $maxHeight) {
// dan wordt de hoogte gebruikt om aan de $max te komen
$sizeFactor = (double) ($maxHeight / $imageHeight);
} else{
// anders wordt de breedte gebruikt om tot de $max te komen
$sizeFactor = (double) ($maxWidth / $imageWidth) ;
}
}
// het instellen van de nieuwe hoogte en breedte
$newWidth = (int) ($imageWidth * $sizeFactor);
$newHeight = (int) ($imageHeight * $sizeFactor);
// maken van de uiteindelijke thumbnail
$destImage = imagecreate($newWidth, $newHeight); // de variabele waar de afbeelding even in geladen wordt
imagecopyresized($destImag
ob_start(); // starten van het opvangen van de data
imagejpeg($destImage); // wegschrijven de data naar een bestand of browser
$this->photoThumbNail = ob_get_contents(); // the raw data van de jpeg
ob_end_clean(); // leegmaken van de std out zodat andere output niet fout gaat
}
/**
* Deze functie geeft de waarde van de net gegenereerde miniatuur terug.
* Zo kun je gemakkelijk de waardes doorgeven aan andere classes.
*
* @return byte De miniatuur van de afbeelding
**/
function clsGetThumbNail(){
return $this->photoThumbNail;
}
/**
* Deze functie voert de uiteindelijke opdracht uit om de photo naar de database te
* kopieren.
*
* @param $title De titel van de afbeelding
* @param $photo De afbeelding die geupload moet worden
* @param $thumbNail De miniatuur die geupload moet worden
* @param $userId Het gebruikers ID van degene die mag uploaden
* @param $userName De gebruikersnaam voor de database server
* @param $userPass Het wachtwoord voor de database server
* @param $hostName De hostnaam van de database server
* @param $database De database waar hetgeen naar geupload moet worden
**/
function clsWriteToDatabase($title,
$query = "INSERT INTO photo(title, thumbnail, original, user_id) " .
"VALUES('$title', '$this->photoThumbNail', '$this->originalPhoto', '$userId');"; // query opzetten
$query2 = "INSERT INTO photo2(kolom1, kolom2) VALUES('$this->photoThumbN
echo "$query2";
// Uitvoeren van de constructor van de class CDatabase
$dbase = new CDatabase($hostName, $userName, $userPass, $database, $query2);
}
}
?>
[/code]
CDatabase.php
[code]
<?
/**
* Database Class
*
* @author Sander Stad <swstad@xs4all.nl>
* @version 0.1
* @copyright Sander Stad
**/
class CDatabase{
function CDatabase($host, $user, $pass, $dbase, $query){
$connection = mysql_connect($host, $user, $pass);
mysql_select_db($dbase, $connection);
mysql_query($query);
mysql_close($connection);
echo "Uitvoeren van de query is geslaagd";
}
function clsExecuteQuery(){
$connection = mysql_connect($host, $user, $pass);
mysql_select_db($dbase, $connection);
mysql_query($query);
}
function clsClose(){
mysql_close($this->connect
}
}
?>
[/code]
i don't see how that would help personally unless you're not calling CDatabase at all.. which leads me to ask where are you creating these objects and what methods are you calling?
loz
loz
ASKER
I call both the constructor from the CimageUpload and the constructor from the Cdatabase.
I've made these because I want to use as less code as possible in other scripts.
But I checked the query and get this out of it:
INSERT INTO photo2(kolom1, kolom2) VALUES('ÿØÿàJFIFÿþ>CR EATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 2!!2222222222222222222222222 2222222222 2222222222 22222ÿÀd …" ÿÄ ÿĵ}!1 AQa"q2 ‘¡#B±ÁR Ñð$3br‚ %&'()*456789:CDEFGHIJ STUVWXYZcd efghijstuv wxyzƒ„…†‡ˆ ‰Š’“”•–—˜™ š¢£¤¥¦§¨©ª ²³´µ¶·¸¹ºÂ ÃÄÅÆÇÈÉÊÒÓ ÔÕÖ×ØÙÚáâã äåæçèéêñòó ôõö÷øùúÿÄ ÿĵw!1 AQaq"2 B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFG HIJSTUVWXY Zcdefghijs tuvwxyz‚ƒ„ …†‡ˆ‰Š’“”• –—˜™š¢£¤¥¦ §¨©ª²³´µ¶· ¸¹ºÂÃÄÅÆÇÈ ÉÊÒÓÔÕÖ×ØÙ Úâãäåæçèéê òóôõö÷øùúÿ Ú ?óK¯k÷Ìs¨‰ Œ À€ãÜÍ:?_…Ã%»R‡úÍkIPòØ⟬²3ezñþsX{Hïsoe-¬jÇâ{‚Øš ÒÞUô_皘x †?ä öÿ²ÖTvNêcŸZ§{9²vfCž§N ÷ØžS¤‡_ÑÑ7 ÝéóÃëå8aú‘ Vcm;PÓþÙk± ™‡ïó.{û×K+ÊÛÜ’k¶Ð›oƒäcÈ JN?ÞJU#h1Á ÞHõ?=²¨‰U 6… :tÛÜø—KÐôèg¸‘ F“g˜èHC‚A uä~µåˆd·Ò®ÖHî$k…XÚFºR9Çã8êsƒÍRñž¹6£a )l³yŒOÙ—@ড়c#'5ò0Ë«{uQì{5ªÓ¨¹_Kž¢ |@½ñ‚]Û\ÚA ¤q‚dX|ð '`ëÚ|NîPïæ¹½ÄÒYiðÛ4±26†Å]¹Öc˜<² ŸÝ𥉅yb \ߧs¢‚„)Ùu 0J=³ Q•P1•ÎçïM¸el¬bËwËúÔ7RÃ>èX¨qÈnsÉëš®·N„ùj«» ï2ç^Ê]5è Ž_ewná>Ÿ D¶‘†TîÈ?LY÷úlvÞZË)UÜ¡À <~]kIï–Ë 1¡2gp'ñéG‰¥2µœ„ã}ºç©í]4+Tr´Ž Zô!ts“éËü %éÇòªrX08 ?]q¹A%”t\ëZZ"$q•¹@³4ù‹yå,€:¸{] n«ŒokœªšnÇ )"lr 5ÐýûžôVé˜ØÝ#Ÿ¥ yl‡›@~ŠÆ–Ý–âTGUȇ8Í4Âê2 ΃ð5ãýZ |G±õ‰)~ß:dõúÖ³´Ž?ˆÖÂ] EªË;…^™=ë ž½»Šöft þ21Á¯M-)½Ì÷ûÆ»M#À÷$uûH# þúJâÛïÆ» :å"ð#ÃÓÍtR(ÇV9CZKb÷#’V 9ê=ýª¯œ[ äÐãŠé¬|12À…ÙáÜ)fèÀéžà甶ºcÌ •Ü1¼®lñϸÏÓ¯Ö¸ôZ#µ·-Nj9 Áÿ°—LŒÀ 4íGO6W/ÉU }22?J¤Çã>µ.‘Q©(£\*MLd;Ê Ÿ”.sól‘À dÙÇ\ç5Nh$¹ ÓáòÜ(H·‚Iç çp@÷ÿ š™šUVVD+’äpO°ô¬*Ò’Õ3¢dôb ìÜ€:ÕÝa Ãa°¿ü{¯ Û{Ϋ_ÌCü½z~5£|¨ðYy®£÷+Ã) çùTFN>÷bê EI¨¾¦ŠI\! —ÌcÀ ªáÅbÜ;Úê‹ÎÇ‚WBB€xõÅw0¥É‹m œ{8È+"È¿÷Ë Wª#¥ä‚Cóù ògåÛßüóǵ uak{I4Î,U% š ºpndãbçE-È{ñüGùš+½F¬Éoq|ìÀ~õ€$g¹š7·24«´)| • ÅbLËx¡•A·=²h‡x±ÁL sô®YROÞô:ÕgÇÔM]Ã}›àÄ™ÍT·RVB!pN;S$s4à à(ÇN8«Z|ž]½òïÆøãÝûÄ8öéŸÂ ºmdr_R®ÜÈà ÐúWCᨥ{Ä œäÇh•zí‘ ý:ûV´·>Z !v`ÁT ’pq]ÿ‡t«ÍK©fUÜÊ0¤œIüú~ui%Räw`Š¹·o1‰;cÉ9ç'¦;õ±¯Ï`“ámÕD¨åR 0¸õÿúˆª:{É&n#€¼—Iû¦ÚNÒy #ŒàŽk@Ú@°Ë  ™FPÉ‚ÀŽpN;ò (§Ëbd×5Ï;Ô,¢»Ö„1Ö蘎NIÈ ñ9úq\íàjZ2yFž=¹À÷>½ýëÓt GüTž§éI#˜ï/Ù@$1#r†|v5)¹`ï* ¤*®r3ýkz;_S0Æñ8ܤcŸLŠ½ øû+DÐFImÞa8Æ1Óñ¢ãt¬±GÓ #ÿ×QÜÛÉ&æ Êž€véZs'£2 ±«àù™/œþK n‡ÊQ§–‘Ü ƒùý*œ‘»êÀÁ Œ!ÂyÀ)sè} O°íSMÍA)ï± I͵ê\šÚYÒ Úâîp&Ц2 E?{Œuë׺šÂñ5é°fÞâQR8àdÀ éÏL‘šÔ»Õd: †E’ùü¯*>AŽ Éã>µ‹¨øwP ÔîQ'e' áÕ@8çsÔg’jžº!ÇM^‡œO(‘OË÷›y;³Éíõ ëUX ‘Ï5Q°ŸO¢¸B§9èjƒ äÆ©XnäMÂŽüj¼ª1ó0#Þ§wP=G| ÕI¥V^•¤LÙ O aÝGåIÉÀ$œ:šk¬WŒƒŽEh@¤Œð ´S€ÀÅ·, I¦#‚Xþ<Ó…° ùÆ:S&qÌÈHÈfó¨Zý!B@ËvçŠå´¡ÔÜov6 ýW;W–ÚPß 1d‹•éžø \KpîìsŽƒÐ fºxu¼S®Á !6¸{ƒÏÍþ ÏãÈÞ1wF [§ÃÓ¤Ö5"Ûo,6Üa“®ãõì= õã¡—Om#Sœ˜dFäöôÏr:~^µÙÆ> Ίc²à ^6úb£»ÓF§jÖî‰ä2®Jžƒ©'I5 uº"3kNŒÀÓt ë˦¹³w0w2°œçü+jO ªÇö‹§ó à d,F~µoJ‹Sµ·û,vDÌX¡‘H : ãŒÓ®ä¬>Ó#(Îv`ýöæ¹Õ)óh•Š sÓ]Ìxí-Á) ÁÏ¥U¿žâ"’Ao!õ|íg¦øw®ŽÐEh Kyk#yÔÓü ôÇjuÔ°ÌŒfÚ Êüu'ñ$¤Ÿ- ¬B¶çŽxéíî´ ï>heYË~ #ƒ^vÄyÝéœ ×¡|UK;G³hY ¼×'OlsŸNÕ æ&åÛqã®=* #j䬬I8, ç ©€dÛœPió+ã”ÇÀüÙûØ=qú~ [”°ùsŒV‹b"íÝéœT|g V——» TÓ^ÉBnÝ´úi…Œü*Y (ÜãIÆh¦Qö½æ?ç³ÿ3UÈ ÍXÔŽuK³ÿMßÿB5XR[ <˜‰fb¨$ú ú/Àz^ðäVÍrÊ&¸Éçy À…yÃ=5oý¢d-’yÞÅòƒúŸø {ì6ØÉŸ÷{V]H“!Óå›P™Ýßj ø֪﷙Xä:œ‘•#×ñ V0(mÉò7¨ÿ ½§Î‘\=G”À«ð ÁpzŽ½ªõHF¶w“Íwq,i,±T ^¼úúdúV…õ¬ wv¬’¶À>`ùû ¤wª6únŸylZ 6glá¤\¯=N AùTZMävçË ¸iÔ. ȯ ü«g-ì3T1I±ˆÝ€xúõê¶Ï˜¡”Ö¦p›œÆ NÝß(o½å\÷ ‹5uÑt›Æly hHòÇ…nö»$ð^ïŒuI7Eˆv] íÈ5În8ëÅ,ŒdrÎı9$õ&·¼¯éþ ñ5¾¥¨é‚ú( ÈÚ3ÌGpÌŠ:3 Ý€p2AÈ W-I8ÅÊ*ﱪÞÇ< –Åh[àcý[ñÿ&¥×uíß_ê¦Ú;oµ ÊÒ¢ žÜ“êp2r{Õx9ÎRõ¦›qM«0/ + çòªó>Ö$`žOéšsÉÔúŠ†nÞ§çþ4 Æ<HG pzõ¢¢Tó#S’=¨ ÔÀ¥Ðÿ¦üê²ò P#Ðþ\2êú° ²Kužà«`èGòí–™ò'‚x¢ŠÚr , d#éEb5ô(Í3yŽ…výÂAÎFzþ _ÐWE°ù{w¶q ÜgëéEÏSâ 9[OŠÇÊò™ ÎýÙÜGl{{׊ |c¼ž;{KDr! •‹¸Êçü¨¢´—Â5¹ãÄç?Z3œ“ÖŠ+2„ õ«vüÈú ÑED²uÿ€Ÿé L˜å”z(¤2 vÁÅQ@ÿÙ ', 'Resource id #5');
The first part is normal because that's all binary but I don't understand the "Resource id #5". This was suppost to be the original photo I uploaded. What the heck happened with loading the data into a variable.
If someone knows the answer because I've been trying almost everything for the last week and a half.
Thanx in advance.
I've made these because I want to use as less code as possible in other scripts.
But I checked the query and get this out of it:
INSERT INTO photo2(kolom1, kolom2) VALUES('ÿØÿàJFIFÿþ>CR
The first part is normal because that's all binary but I don't understand the "Resource id #5". This was suppost to be the original photo I uploaded. What the heck happened with loading the data into a variable.
If someone knows the answer because I've been trying almost everything for the last week and a half.
Thanx in advance.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
class CImageUpload{
to
class CImageUpload extends CDatabase {
- Daniel