[PHP][MYSQL] Database backup script plaatjes werken niet?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 21:11
Ik heb een mysql backup script gemaakt. Dit script kan gewoon in een andere pagina worden geincluded. Bijvoorbeeld ?pid=backup/mysql. En vervolgens wordt er gevraagd of je de backup wilt downloaden.

Dit werkt prima, er zit alleen een klein foutje in... Plaatjes worden niet goed gebackuped. Wanneer ik de sql file met notepad bekijk zie ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
êñÏn1üýë²Òî&#8482;G Ç&#8217;Ù@;0 g®äW*® &#710;/ÝÁ~€œ~=±[ºfZPj€}€à+éçïZ:úu¶ß§S(V©OoÇNÝ­ÎÅ£82pr2y=qÇã[ú÷ö&#8218;;»)ü©!`Áá|8ù&#8240;Ã~ÜtÁCM²¹ºŒ,1oŸNSøß&#8226;lI ß[[%ÂrH1&#8217;OÓLö¡BÉZ=OøK)E87wfü&#8250;WoÏSêÏ&#8230;Ÿ¥&#402;L×0&#8212;&#8216;²-­ÁýêÈì~]ëØ2éÍzÆO&#8224;&#8211;ÿ |<<G¢X[ÿ l[)WšÄ}&#8482;äFxÜËBìÎs_Ã;[Lª¥Õö~íÿ Ú
&cedil;þD&#8216;í_q| ø&brvbar;&#8212;S''&#8224;u©&#8224;ùc[`ïÑâ íüÇËŽ&#8222;*Ð&#8222;žôäÓ³×Ý{|ïý3³-ÄNG&#8225;ž&acute;1/ÙO­&#8250;i=ûÿ Zž<&#8225;ÄZO¡j«r±ÆÀª²íÀp»}T0ž&#8218;ÝëÎ|;à¿xãW&#8225;Eð&brvbar;&#8249;w®êRÙÙ&#710;|ß,&à¯Lž&#732;Çjý¥ø&#8212;ðgÃ>> Ôí"MFÙd&#8211;ÒézÜiò©Ëçþ}ÈóQïã_²GÃ)&frac34;|tÕ&#8249;yÚÙ[&#710;î.
»í&#8211;¥Wù²ct<òséŜÂ&uml;a0µªá&uml;Þjíµ&brvbar;&frac12;]·ßV­«ï×ÊÎòHåøÈªzS«''(ïnY;­ºY§ÿ Sãí/ö-ý¥5Ô4¿&#8230;ºÜ&brvbar;TÊ){$*¥A
ZK&#710;&#710;äç&#8230; nêX=ãÂßðNïÚûVÓ`&acute;»ø5­ÉSÛKn¢ãNÝ`&#8216;$hãîäç,¡c&acute;Nxþ&#8249;&frac34;x«]ó£&#8249;J&#8212;IŽÖ!$·1ÛŹ®Uê¡»œŽÕ÷>)øªÅ"&#8249;fñ¡+&#8226;n&#8217;&#8240;q€6&acute;(ç ò8''&uml;¯ÅñŽcEU&#8218;¡¥í~šiúþ¯©çËÍe&brvbar;Êûy}ÚýçYû|yý¢þü
ð&#8218;äý,÷&#8230;4;K8ä°Ðã&#8211;  ÖÜFÊ&#8217;ÛØ&#8224;Æbó %&#8250;Ìwù ~>Á[ü3û{þÜ~9ЯSàVªÚ6&#8226;çÎ¢ÞæÏ1&#8222;U_.1#Ú°UWRÆË&#8211;8rr«ýxoâ×&#8240;%¶D&#8222;ÇæÈ&#8240;&#732;ZÃqUè öÎp?úØî.~!ë&#8218;0e0ÚîÓø
ŽO=9ÿ ëŜðåÆÙ¬"â£Ú]^Þ};ìseFs޲m7ÖïO»õüOó÷Õ¿à&#8482;ß¶­&frac14;¯;|ñ&#8222;&#710;&brvbar;Y§Ê1»?(ûfqÇ&brvbar;1ùVg&#8249;?aÛm   gÿ ¯&#8217;b;&#8211;ÇNvZŒóöÍÝÇLûôÍ~z&#8212;Å-acò¡}:Lq!kÇ9''¯çõí^u­üJÕ>Ï.aÒ&brvbar;''vÍöxc?&#8224;FkÒ¡Ç&#8482;£d&curren;&#8211;&#8212;ﵞÊß.ž&#8240;õùŸç£&uml;þÇ_&acute;öŜÎÚÁoA²C&cedil;ÿ fK" Ýþ®i&#8221;vþè?ícŜºÂ&#8249;~Õm«à/é&#710;²$r=Æ&#8216;rª2àOåŸ&uml;ö¯î¿Åߥ&#8216;$ŽãLÐ$$&cedil;uû)R&curren;íÛžß78éÓ°¯&#8216;üsâMí§[¯èR&#8212;''Í_*5
Áò÷oëüX
q×=³ëaø×Q&uml;ÕÃüVOâÕé¶ú^&acute;ðN1MïÖ÷ý?®&frac12;Ä?&#8230;úUô_RE>&#8250;:B­9ž''&#8230;ãHÙ·|®{&#8211;äœy¬o&#710;&frac34;.Õ&acute;]!íßS&#8211;â ¢1Z&#710;Fæݳoû~¯ÜõÝ7Ið>¡s&brvbar;èXH#Ÿ2[¬kÕV*ËìA8$ägŽõù&#8240;qâëmwQÓÜ`$rE&#732;Ûîñ§''êcÏÿ ^¹±ÙÍb¡)G&#8211;&curren;Õ«mûÕk++»Y&frac34;÷<|T=d­ñ8¯Áy¿ëcáO&#710;3^dxnÒçLk&#8250;KÝhžÚhÚx®î"¹ä&#8249;&#402;ÊË»&brvbar;XŽ3_¹ŸðE¯&#402;ß>&CñjçÇ    ð¿&#8249;¥ÒWÂðØÉâ]NÕä³Öå&curren;HMìríÀÛC%w Ìåßí;=&acute;¶¥&frac14;4áuaöF7æ?y¯Ùø ÄAôoŽnRSSð¢m^ }&#8212;ù
 ~=;ŸC&#8249;quG9Q­Ëñ4&#8211;ëTµê®ÝôzžÎ0)ÇNeõÞVjöÓª? _  þÏß4Ô€iß
>Ú&#710;ÊàÃá
#€WåÝžâ Ãm<yQ_Hø{áOÃ;yák&#8225;þ
&#8230;·''&#8224;&acute;e*à µŸ³Ïgšåô BD¿/Î&#710;yïûÉ?_z÷-%&#8226;Ñ&#8224;ÂQ&#8220;#ÔcŸÇÐõ¯ÃV?+9b]ÔRÝÞÊÚnÿ ¯&#8216;ªºJûò«ýËúïÜíôÿ ønÞ&#8240;<=¢&#8218;€4»H¢ à±ùG&#8249;Éã€k>ûÂ^$§Ã/µ¹:>ž[&#8217;-ö>ztõ鎵ÙÛÄLMÊ,e0Ú9dnß&#8230;bkbî&#8249;ÛD&#8220;L&curren;Åö+ç&#8216;&frac12;ú*ärxíŒ×n^s&#8220;x&#8225;¬WWåç×&frac34;÷í±&#8221;&frac34;''òü&#8216;çW&frac34;ðœ®Í''&#8230;&frac14;<ÌT §@Ær¿bÉÀýyíu÷< &#8216;G&#8222;&frac14;6ApþÃÓN@Áþ;0¿&#8482;öâ»&#732;üYt¹xô&frac12;/&#8224;ÈÂß±?1Ýò®qß·LœW;&uml;iÚâFêÚÛy&#8220;H0ÑZª¡c,ÃËBîPTã×''[¬ENfž"×ÓW³µ·jûõ4§Á&frac34;&#8240;µo+#È5Ï&#8230;¿.VC/|''y&#8250;ÂúD®rprßcç¯?×­x&#8249;þ|&frac34;&#8230;ã&frac12;ø[ðþê"o&#8222;tI7d÷I,öuädcrüÀcé­q<Inò&frac14;W6:&#8222;YŽ?*X|&#8240;&#8224;ÕÄ¿ÂONÍÊÿ y~³4óÛ3ÜZ&#8250;Y7<eï
@ÎQý >Çóí¥ŒÆF6X/µÞº%ß­­÷ùYÆm}wµþGç¿eÿ ÙþþÕoðŸÁ6Wbxå2éš%&#8230;&#8222;©"ÌŒŽ
¥¬{lg¹CÄ |1¥ØiþÑìm"X­­l`&#8224;&#8211;?&#8211;8Ñpª&frac14;ôúóTþ!;e€#qŽp}zÏëW&acute;«¹f L&cedil;ÿ ü«írN*p&#8250;œùÚåêô³&#8225;ÏþN&#710;v·K|¬¿¡Ûñ&#402;⢶þ.g=òá(Õ?ÃÖºÏ
®ØÑcØûã&#8225;üñïõíßÅ+v&#8220;â÷Å_1÷üLñ·¿üÍ õéÓ¯±ÏíŸ<uâMAÚâ7K;xáùŸò×Û§ùãê3ã&#8226;B¶+&#710;µ=&acute;n×Û³Öûm÷ŸRtâºÿ ^OþÝs°ðk4k4r/OÇôíÇåÆ*¯Ä&#8224;ŽM-×þ&#8482;MÔùgúW ^xvMX¹·Ž1µîü¿ÇôŸ&#8230;pÞ8±šêÍ#gxÿ Õãôõì=ÿ ¯n:Áb2Ïí&#710;^ÂÉÚë²õíº]&#8222;ÿ wçÛ¿ŸÞÞÝ&#8240;äfŽñ&ùöCsæIæׯzŸÀb&frac34;&frac12;ÓüE&curren;ëG³ÇÚíÖ3''&#8211;rCHzwûùéÏNjúü³&frac34;ð»&#8226;&#8230;ææ8o?é·ö|ÿ úúw=ëÎü7ákß
Ûk&#8216;Þå&#8240;&#8250;`ý&#8212;ò{dá@#ùWçØìë&â;Ó§&#8240;K&#8230;ÅF*7&acute;¥ÍRµ&acute;v


De backupmogelijkheid van phpmyadmin geeft de volgende output:
code:
1
bc8bfd3a4f15f0a782bc57f0f6e85f5d43ab7c43f125d68f7f358787d752d627d3ecf51f15eb7e14f0bb786edfc5b1693a66bfac695e18b43addca5a7867c277badcfa869767696e9abdadc47752fa6dcdff008ff5bb3d27c582dbc317773e2897c3fe19d5b54d667d406ad7daaeade06f1678bfc25e22b5d03c17e38b2b4f11eada7eaba52cde27b8d435cf18785a1d4745f114b3788135fbab0ba9f4cbf190a3976072dfed0c2e4f8a78ccce4b338e1e9e6793e332ead84c44aaacda861219c63f0589a95308b2ac1d0870fd09ca39bc7135333583c250ab0f96cd3857c39cad679c7bc73c4f9478a9478cb2d8e1b3cccf30cdb88f2be3be15f11f3ec157c757cef2bc93018da5438af0192cf32ca732c56271d9ee32863234d39e575633c4e1e9fb4eaff60f0b36a565e219b54f0bdf695a8de1d4a497567b5bfd3da00259ad659f51934fd2f48b465ba924956eee85a69f1c7e45fa476864b98fe72f8cbfb432fc21f0b6a1e22b2b7d1bc53af6a774fa3693e14597431a2ac526a37f07863c43a8db6a9a6c579a7e970ae9da55cf8820b716961addeea52d8ea9a9240ed7b69ade2cf18dbfc37f00dfa78d3c79ff000912ea10f82bc1b06ade2ad4b5cd7ace5b7b3f0f69cd67aa6ab368f737f67e33d1b43b9d3749b1b2bf96e2eef750d3d663a63e9b1cf25d69b368fa3f863e25ebde0df18dbf86fc2f67e1f7f87daac1a545e26f06f84bc63a449711f8eb4cd1753befec297c22f7175a5f87f45b64b1b3d324d56e6cbc3be2b37be2d96f2df51d6b53d6b48f61e6d471f4b2ac761f1386a39fd5c53a1469e5b81ad86c4e2eb53c350c9b1795d49cf1ef0993e0aa61eae2f1987c5e030b5f1b5b119b6329637ea52c352a94fe2380b85386b86b3bc27887c5791f1567de0ae0f8b6193e1b8a30797e2a9e4d8ec4fb0c5e6b96e5b983c66132aad9866787ad87c2cf1f829c72fc156ab95e6747095732c3aa34b138fe09f8d5e21f88fa368fa9eafe01b6baf0edc68775e2bd57c55e16bdb3d574ad381f10789e0d005ff8574e37573e1dbab9b9f0f5fe996911161045a5dad86a314725a4ef74fd77c3af8ab79aa68173e20f89761a1687e2ebdbfbfd43e1e787e19fc11ab278bbe1df88bc36fa4ebda55ef877c43a76bbaededf6a5a8378375e8258f51d3ecfc2fa2e83e2c9cbea975a941a3dd766de13d1fe19e9da1eb3a65cf8ad7c0b69a77c44f11f88878c3c6926a89a6cfe27d36dee75ed28b1d666934cd2566f0aeb7e22f1069daf69d6d669aa58e95ad9f0ee95aae8df6bd67a5f16f81bc19358c43c49a56889ac78763f12de69d6ba97d9edfc57a1c7e15b9d5b4fbbd72db5265b2823baf125e787342bff000f5d695ab5f45e2cf00be873dadaea3a6788b46bbb5f9e8caa708e6b5259460735cbab65585c4e4f569f1055c4e3aa50c4e272ead4e55e14e8cf011


Wanneer ik mijn backup terug inlees klopt het plaatje niet meer. Je ziet dan vreemde strepen en dergelijke.

Dit is het script:"
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
65
66
67
68
<?
/*****************************************************************************
 *
 *  Copyright            : Copyright (C) Nico Habets
 *  Email                : nhabets <a t> xs4all.nl
 *  
 *  
 *  Disclaimer:
 *  Niets uit dit script mag zonder toestemming van de maker van deze
 *  scripting gekopieerd, of doorverkocht worden aan derden. De maker van deze
 *  scripting blijft ten alle tijden copyright op dit product houden. De 
 *  scripting is ter beschikking gesteld door Nico Habets.
 *  Dit programma is GEEN vrije software, en mag niet worden doorverkocht en/
 *  of gewijzigd worden tenzij de eigenaar toestemming hiervoor heeft verleend
 *
 *****************************************************************************/
if (!defined("INCMS"))      { die("Hacking Attempt!"); }
if (!defined("LOGGEDIN"))   { die("Hacking Attempt!"); }

ob_clean();
header("Content-type: Application/octet-stream"); 
header("Content-Disposition: attachment; filename=DB Dackup ".date("Y-m-d").".sql"); 

$tables = mysql_list_tables($dbname);
while($table = mysql_fetch_row($tables))
    {
    $getrecords = mysql_query("SELECT * FROM ".$table[0].""); 
    $getfields = mysql_query("SELECT * FROM ".$table[0]." LIMIT 1"); 
    while($record = mysql_fetch_object($getrecords)) 
        {
        $countfields = mysql_num_fields($getfields);
        $field = 0;
        $inbackup .= "INSERT INTO ".$table[0]." (";
        while($field < $countfields) 
            { 
            if ($field <> 0) 
                { 
                $inbackup .= ",".mysql_field_name($getfields, $field)."";
                }
            else 
                { 
                $inbackup .= "".mysql_field_name($getfields, $field)."";
                }
            $field++;
            }
        $inbackup .= ") VALUES(";
        $field = 0; 
        while ($field < $countfields) 
            { 
            $fieldname = mysql_field_name($getfields, $field); 
            if ($field <> 0) 
                { 
                $inbackup .= ", '".str_replace("'","''",stripslashes($record->$fieldname))."'";
                } 
            else 
                { 
                $inbackup .= "'".str_replace("'","''",stripslashes($record->$fieldname))."'";
                } 
            $field++; 
            } 
        $inbackup .= ");\r\n";
        $rules++; 
        } 
    }
  
  echo($inbackup);
die();
?>


Ik heb in export.php van phpmyadmin liggen rommelen, maar deze code is zo onoverzichtelijk geschreven dat ik er niet uitkom.
Wie kan mij helpen?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Een plaatje is binaire data. Om dit een beetje fatsoenlijk in je backup te krijgen kun je deze het beste BASE64 encoden bij het maken van je backup. Door deze vervolgens te omsluiten met een base64decode achtige functie in je backupscript werkt je backup invoeren ook weer perfect.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Je dumpt binaire data nu als een string, dus dat gaat (bijna) altijd mis. PHPMyadmin heeft er waarschijnlijk een base64 encoding o.i.d. heen gegooid om de binaire data als string weer te kunnen geven.

Dit had je zelf toch ook wel af kunnen leiden uit het feit dat een afbeelding geen string is?

Edit: note to self: meteen op "verstuur bericht drukken" i.p.v. eerst wat anders gaan doen.....

[ Voor 15% gewijzigd door Creepy op 07-01-2005 15:37 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney