TheEssentialGuidetoDreamweaverCS4withCSS,Ajax,andPHPDavidPowersTheEssentialGuidetoDreamweaverCS4withCSS,Ajax,andPHPCopyright2009byDavidPowersAllrightsreserved.
Nopartofthisworkmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recording,orbyanyinformationstorageorretrievalsystem,withoutthepriorwrittenpermissionofthecopyrightownerandthepublisher.
ISBN-13(pbk):978-1-4302-1610-0ISBN-13(electronic):978-1-4302-1611-7PrintedandboundintheUnitedStatesofAmerica987654321Trademarkednamesmayappearinthisbook.
Ratherthanuseatrademarksymbolwitheveryoccurrenceofatrademarkedname,weusethenamesonlyinaneditorialfashionandtothebenefitofthetrademarkowner,withnointentionofinfringementofthetrademark.
DistributedtothebooktradeworldwidebySpringer-VerlagNewYork,Inc.
,233SpringStreet,6thFloor,NewYork,NY10013.
Phone1-800-SPRINGER,fax201-348-4505,e-mailorders-ny@springer-sbm.
com,orvisitwww.
springeronline.
com.
Forinformationontranslations,pleasecontactApressdirectlyat2855TelegraphAvenue,Suite600,Berkeley,CA94705.
Phone510-549-5930,fax510-549-5939,e-mailinfo@apress.
com,orvisitwww.
apress.
com.
ApressandfriendsofEDbooksmaybepurchasedinbulkforacademic,corporate,orpromotionaluse.
eBookversionsandlicensesarealsoavailableformosttitles.
Formoreinformation,referenceourSpecialBulkSales–eBookLicensingwebpageathttp://www.
apress.
com/info/bulksales.
Theinformationinthisbookisdistributedonan"asis"basis,withoutwarranty.
Althougheveryprecautionhasbeentakeninthepreparationofthiswork,neithertheauthor(s)norApressshallhaveanyliabilitytoanypersonorentitywithrespecttoanylossordamagecausedorallegedtobecauseddirectlyorindirectlybytheinformationcontainedinthiswork.
Thesourcecodeforthisbookisfreelyavailabletoreadersatwww.
friendsofed.
comintheDownloadssection.
CreditsLeadEditorBenRenow-ClarkeTechnicalReviewerTomMuckEditorialBoardClayAndres,SteveAnglin,MarkBeckner,EwanBuckingham,TonyCampbell,GaryCornell,JonathanGennick,MichelleLowman,MatthewMoodie,JeffreyPepper,FrankPohlmann,BenRenow-Clarke,DominicShakeshaft,MattWade,TomWelshProjectManagerBethChristmasCopyEditorsKimWimpsett,MarilynSmithAssociateProductionDirectorKariBrooks-CoponyProductionEditorKellyWinquistCompositorMollySharpProofreaderPatrickVincentIndexerJulieGradyArtistAprilMilneInteriorandCoverDesignerKurtKramesManufacturingDirectorTomDebolskiCONTENTSATAGLANCEAbouttheAuthorxxAcknowledgmentsxxiIntroductionxxiiChapter1:Dreamweaver'sNewLook—MorethanSkinDeep.
.
.
.
1Chapter2:SettingUpaSiteinDreamweaver59Chapter3:CreatingaWebPageandAddingContent103Chapter4:UsingCSStoAddaTouchofStyle155Chapter5:CreatingaCSSSiteStraightOutoftheBox195Chapter6:BuildingSiteNavigationwiththeSpryMenuBar.
.
.
233Chapter7:UsingSpryDynamicEffectsandComponents257Chapter8:GoingBeyondtheBasicswithSpryandAjax307Chapter9:BuildingOnlineFormsandValidatingInput371iiiChapter10:IntroducingtheBasicsofPHP425Chapter11:UsingPHPtoProcessaForm459Chapter12:ReducingYourWorkloadwithPHPIncludes503Chapter13:PreservingDesignIntegritywithTemplatesandInContextEditing539Chapter14:StoringUserRecordsinaDatabase583Chapter15:ValidatingDatabaseInputandUserAuthentication.
.
.
637Chapter16:WorkingwithCustomFormsandMultipleTables.
.
.
683Chapter17:HandlingCheckboxGroups,Searches,andDates.
.
.
743Chapter18:UsingXSLTtoDisplayLiveNewsFeedsandXML.
.
.
805Chapter19:UsingSpryDataSetstoRefreshContent843Chapter20:DeployingYourSiteontheInternet889Appendix:GeneratingXMLwithPHP905Index917ivCONTENTSAbouttheAuthorxxAcknowledgmentsxxiIntroductionxxiiChapter1:Dreamweaver'sNewLook—MorethanSkinDeep.
.
.
.
1ExploringtheUI3Inspectingthedefaultworkspace3Switchingbetweengrayscaleandcoloredicons7Choosingapresetworkspacelayout7Expandingandcollapsingpanelsvertically9Resizingpanels9Usingpanelsiniconicmode9Minimizingiconicpanels10Convertingiconicpanelsintoafloatingtoolbar11Closingandrestoringfloatingpanels11Switchingbetweenpanelsandicons12Temporarilyhidingpanels12UsingAuto-Show13HidingtheApplicationbar(Maconly)13Movingandregroupingpanels13Movingasinglepanel13Movingapaneltoadifferentgroup14Changingtheorderofpanelswithinagroup14Movingagroupofpanels14Stackinganddockingpanels15UsingandconfiguringtheInsertpanel15Hidingthelabels17ConvertingtheInsertpaneltoatabbedtoolbar18Switchingbetweentabsandmenu19CustomizingtheFavoritescategory19vUsingthePropertyinspector20SelectingHTMLandCSSviewinthePropertyinspector20ConfiguringthePropertyinspector22UsingtheResultspanelgroup23Managingworkspaces23ExploringtheDocumentwindow24Workingwithtabbedwindows25Viewingthefilepath25Closingtabs25Displayingdocumentsoutsidethetabbedinterface25Gettingquickaccesstorelatedfiles26UsingtheRelatedFilestoolbar26UsingtheCodeNavigatortoeditstylesheets27ExploringtheDocumenttoolbar29SwitchingbetweenCode,Design,andSplitviews29UsingLiveviewtotestpages31WhathappenedtoLiveDataandhowdoesLiveviewdiffer34InspectingdynamicallygeneratedcodewithLiveCode35OtheroptionsontheDocumenttoolbar36GettingthebestoutofCodeview37UsingtheCodingtoolbar37SettingCodeviewoptions41Usingcodehintsandautocompletion42IntroducingimprovedsupportforJavaScriptcodehints43Printingcodeincolor43AquicklookatotherchangesinDreamweaverCS444Screensharing44Settingupascreen-sharingsession45ManagingCSXS49Othernewfeatures50Whatisnolongerthere51Changingdefaultsettings52Migratingsnippetsandotherpersonalsettings53LocatingtheDreamweaverconfigurationfiles53Migratingsnippets54Transferringworkspacelayouts55Movingfavorites55TroubleshootingmysteriousDreamweavererrors55Chapterreview56Chapter2:SettingUpaSiteinDreamweaver59Decidinghowtoorganizeyoursite60Decidingwheretotestyourpages61Choosingtheappropriatefilenameextension62Choosingdocument-orroot-relativelinks64Understandingthedifference64Whichshouldyouchoose65CONTENTSviChoosingwheretostoreyourfiles66Findingthetestingserverroot66CreatingvirtualhostsonApache69RegisteringvirtualdirectoriesonIIS76Creatingthesitedefinition77TellingDreamweaverwheretofindlocalfiles78TellingDreamweaverhowtoaccessyourremoteserver80Choosinganaccessoption80UsingFTP81Definingthetestingserver83Selectingoptionsforlocaltesting83Selectingoptionsforremotetesting85Settingothersiteoptions87UsingversioncontrolwithSubversion88RegisteringasitewithaSubversionrepository89Committingnewfilesandchangestotherepository91Viewingrevisionsandresolvingconflicts93Keepingyourworkingcopiesup-to-date94Lockingfiles94ManagingDreamweaversites94Settingoptionsthatapplytoallsites96Settingnewdocumentpreferences96Choosingthedefaultdocumenttype97SettingoptionsforPreviewinBrowser98Usingafile-comparisonutility99SettinguptheFileComparefeature99Comparingfiles100Chapterreview100Chapter3:CreatingaWebPageandAddingContent103Creatinganewdocument104StartingfromtheWelcomescreen105UsingtheNewDocumentdialogbox105Otherwaysofopeninganewdocument107Insertingtext108Insertingtextdirectly108Copyingandpastingtext110ImportingMicrosoftWorddocuments(Windowsonly)111Insertingimages112Insertingimagesstoredonyourcomputer112Dragginganddroppingimages113Selectinganimagethroughthefilesystem113Addingalternatetext115Textandimagealignment116Insertingremoteimages116Insertingplaceholderimages117CONTENTSviiUsingPhotoshopSmartObjectsasimages119InsertingaPhotoshopSmartObject120UpdatingaSmartObject122InsertingFlashandFlexmovies124EditingDreamweaverCS3pagesthatcontainSWFmovies128Addingstructuretoyourpagecontent128SelectingtheHTMLviewofthePropertyinspector130Creatingparagraphs,headings,andpreformattedtext131Addinginlinetags132UsingtheBoldandItalicbuttons132UsingtheFormatStylemenu132UsingWrapTagandRemoveTag133Creatinglists134Creatingbulletpointsandnumberedlists135Creatingadefinitionlist136Creatingblockquotes136Usingtables137Insertingtables137Editingtables138Insertinganddeletingrowsandcolumnsaccurately140Selectingtablecells,rows,andcolumns141ImportingdatatablesfromMicrosoftExcel(Windowsonly)142ImportingdatafromaCSVfile142Organizingcontentintoalogicalstructure142Groupingrelatedcontentwithtags143Insertingahorizontalrule146Creatinglinks146Usingtexttolinktootherpages146UsingtheSelectFiledialogbox147UsingtheHyperlinkdialogbox148Openingalinkinanewwindow149Linkingtoaspecificpartofapage149Usingimagesaslinks150Removingthelinkborder150Creatinganimagemap150Chapterreview153Chapter4:UsingCSStoAddaTouchofStyle155Creatingbasicstylerules157Modifyingpageproperties157InspectingtherulescreatedbyPageProperties163Insertingandstylinga164Creatingnewstylerules169Definingaselector169Definingtherule'sproperties172IntroducingtheCSSStylespanel177OpeningtheCSSStylespanel177ViewingAllandCurrentmodes177CONTENTSviiiExploringthePropertiespaneoftheCSSStylespanel179DisplayingCSSpropertiesbycategory179DisplayingCSSpropertiesalphabetically179DisplayingonlyCSSpropertiesthathavebeenset180Attachinganewstylesheet180Adding,editing,anddeletingstylerules181Movingstylerules181Exportingrulestoanewstylesheet181Movingruleswithinastylesheet184Movingrulesbetweenexternalstylesheets184Movinginlinestylestoastylesheet186CreatinginlinestylesforHTMLemail187SettingyourCSSpreferences188Creatingandeditingstylerules189Settingthedefaultformatofstylerules190Checkinghowstyleswilllookinothermedia191UsingtheStyleRenderingtoolbar191UsingDeviceCentralCS4192Chapterreview193Chapter5:CreatingaCSSSiteStraightOutoftheBox195Usingabuilt-inCSSlayout196Choosingalayout197Decidingwheretolocateyourstylerules197Linkingtoexistingstylesheets198Makingsureconditionalcommentsareapplied198Stylingapage199InspectingthecascadeinCurrentmode208Calculatingspecificity209Finishingthelayout210Creatinganewpagewiththesamestyles216UsingFindandReplace218Searchingfortext220Searchingsourcecode221Performingadvancedtextsearches222Performingcomplexreplacementswithspecifictags224Usingregularexpressionsinsearches225Savingqueriesforfutureuse228UsingastoredquerytoremoveCSScomments229Chapterreview229Chapter6:BuildingSiteNavigationwiththeSpryMenuBar.
.
.
233ExaminingthestructureofaSprymenubar235Lookingatthemenubar'sstructure237Editingamenubar238MaintainingaccessibilitywiththeSprymenubar239CONTENTSixCustomizingthestyles240Changingthemenuwidth240Changingcolors241Addingborders241Changingthefont242StylingaSprymenubar243Towrapornottowrap,thatisthequestion243Customizingthedesign248Choosingbordercolors252Removingamenubar253Chapterreview254Chapter7:UsingSpryDynamicEffectsandComponents257AnimatingpageelementswithSpryeffects259DOM101—whycleancodematters260ApplyingaSpryeffect262Exploringtheavailableeffects266Appear/Fade267Blind268Grow/Shrink268Highlight270Shake270Slide271Squish271Applyingmultipleeventstoatriggerelement271Removingeffectsandbehaviorscleanly272Restoringadeletedeffectorbehavior273ConservingspacewithSpryUIcomponents273Buildingatabbedinterface274Examiningthestructureofthetabbedpanelswidget275Editingatabbedpanelswidget277Selectingharmoniouscolors281Convertingtoverticaltabs284Avoidingdesignproblemswithtabbedpanels288Usingtheaccordionwidget289Examiningthestructureofanaccordion289EditingandstylingaSpryaccordion291Usingcollapsiblepanels295Examiningthestructureofacollapsiblepanel296Editingandstylingcollapsiblepanels297CreatingtooltipswithSpry299ExaminingthestructureofaSprytooltip299Insertingandstylingtooltips300RemovingaSprywidget304Chapterreview305CONTENTSxChapter8:GoingBeyondtheBasicswithSpryandAjax307Programmingterminology101309UnderstandingSpryobjects310InitializingaSpryobject310Changingaccordiondefaults311Usinganobject'smethods315Openingpanelsfromalinkonthesamepage315UsingtheClusterobjecttocombineeffects327UsingSpryutilities335PassinginformationtoaSprywidgetthroughaURL336Openingataboraccordionpanelfromanotherpage336Openingacollapsiblepanelfromanotherpage340SelectingandmanipulatingpageelementswithSpry.
340Reducingdownloadtimeswithsmallerfiles350CreatingunobtrusiveJavaScript350UsingtheJavaScriptExtractortoexternalizescripts350UsingotherJavaScriptlibraries352InstallingDreamweaverextensions354UsingtheAdobeExtensionManager355Migratingextensionsfromapreviousversion355Installinganextension356Removinganextension357UsingjQueryandYUIwebwidgets358InsertingajQueryUIdialogwidget360SelectingdateswithaYUIcalendar365Chapterreview368Chapter9:BuildingOnlineFormsandValidatingInput371Buildingasimplefeedbackform372Choosingtherightpagetype372CreatingaPHPpage373Mixing.
phpand.
htmlpagesinasite374Insertingaforminapage374InsertingaforminCodeview376Addingtextinputelements376Settingpropertiesfortextfieldsandtextareas380Convertingatextfieldtoatextarea,andviceversa382Stylingthebasicfeedbackform382UnderstandingthedifferencebetweenGETandPOST384Passinginformationthroughahiddenfield386Usingmultiple-choiceformelements387Offeringarangeofchoiceswithcheckboxes388Usingradiobuttonstoofferasinglechoice394Offeringasinglechoicefromadrop-downmenu397Creatingamultiple-choicescrollablelist399CONTENTSxiOrganizingformelementsinlogicalgroups402Insertingafieldset402Validatinguserinputbeforesubmission403UsingSpryvalidationwidgets404InsertingaSpryvalidationwidget406Removingavalidationwidget406ValidatingatextfieldwithSpry406Buildingyourowncustompattern413ValidatingatextareawithSpry414ValidatingcheckboxeswithSpry416ValidatingaradiobuttongroupwithSpry419Validatingadrop-downmenuwithSpry420ValidatingpasswordswithSpry421Chapterreview422Chapter10:IntroducingtheBasicsofPHP425UnderstandingwhatPHPisfor426Increasinguserinteractivitywithserver-sidetechnology427WritingPHPscripts428EmbeddingPHPinawebpage428Endingcommandswithasemicolon429Usingvariablestorepresentchangingvalues429Namingvariables430Assigningvaluestovariables430DisplayingPHPoutput431Commentingscriptsforclarityanddebugging432Choosingsingleordoublequotationmarks432Usingescapesequencesinstrings434Joiningstringstogether436Addingtoanexistingstring436Usingquotesefficiently437Specialcases:true,false,andnull437Workingwithnumbers438Performingcalculations438Combiningcalculationsandassignment440Usingarraystostoremultiplevalues441Usingnamestoidentifyarrayelements442Inspectingthecontentsofanarraywithprint_r(443Makingdecisions443ThetruthaccordingtoPHP445Usingcomparisonstomakedecisions445Testingmorethanonecondition447Usingtheswitchstatementfordecisionchains448Usingtheconditional(ternary)operator449CONTENTSxiiUsingloopsforrepetitivetasks450Loopsusingwhileanddo.
.
.
while450Theversatileforloop451Loopingthrougharrayswithforeach452Breakingoutofaloop453Usingfunctionsforpresettasks454UnderstandingPHPerrormessages455Chapterreview457Chapter11:UsingPHPtoProcessaForm459Activatingtheform461GettinginformationfromtheserverwithPHPsuperglobals461Sendingemail462Scriptingthefeedbackform463UsingBalanceBraces472Testingthefeedbackform473Troubleshootingmail(473Improvingthesecurityofthemail-processingscript473Gettingridofunwantedbackslashes474Makingsurerequiredfieldsaren'tblank475Preservinguserinputwhenaformisincomplete480Savingfrequentlyusedcodeasasnippet483Filteringoutpotentialattacks486Safelyincludingtheuser'saddressinemailheaders489Whatifyoustilldon'tgetanemail492Handlingmultiple-choiceformelements493Redirectingtoanotherpage498Blockingsubmissionbyspambots499UsingaCAPTCHA499Usingaquestioninplaintext500Usingahoneypot500Chapterreview501Chapter12:ReducingYourWorkloadwithPHPIncludes503Includingtextandcodefromotherfiles504IntroducingthePHPincludecommands504TellingPHPwheretofindtheexternalfile504Usingsite-root-relativelinkswithincludes508Lighteningyourworkloadwithincludes510Choosingtherightfilenameextensionforincludefiles510DisplayingHTMLoutput510Avoidingproblemswithincludefiles514Applyingstyleswithdesign-timestylesheets518Addingdynamiccodetoaninclude519UsingincludestorecyclefrequentlyusedPHPcode523CONTENTSxiiiAdaptingthemailprocessingscriptasaninclude525Analyzingthescript525Buildingthemessagebodywithagenericscript527Avoidingthe"headersalreadysent"error534Chapterreview536Chapter13:PreservingDesignIntegritywithTemplatesandInContextEditing539UsingDreamweavertemplates540Creatingatemplate541Addingeditableregionstothemastertemplate542Creatingchildpagesfromatemplate545Creatingandcontrollinganoptionalregion548Usingadvancedoptionswithanoptionalregion552Usingeditableoptionalregions552Creatingarepeatingregion553Removingorchangingtemplateregions553ComparingtemplateswithPHPincludes556Lockingcodeoutsidethetags559Breakingthelinkbetweenapageandatemplate559UpdatingContentwithAdobeInContextEditing559HowInContextEditingworks561MinimumrequirementsforInContextEditing562AddingInContextEditingmarkuptoapage562Creatinganeditableregion562Controllingwhatcanbeeditedinaneditableregion564CopyingtheInContextEditingfilestoyoursite566Creatingarepeatingregion567Controllingactionswithinarepeatingregionsgroup568Removingeditableandrepeatingregions568EnablingtheuseofCSSclasses569PreparingapageforInContextEditing570EditingapagewithInContextEditing571LoggingintoInContextEditing572Updatinganeditableregion573Editingarepeatableregion577Savingdraftsandpublishing578AssessingtheprosandconsofInContextEditing579Chapterreview579Chapter14:StoringUserRecordsinaDatabase583IntroducingMySQL584UnderstandingbasicMySQLterminology585UsingMySQLwithagraphicinterface586SettingupphpMyAdminonWindowsandMac587LaunchingphpMyAdmin589Troubleshooting590LoggingoutofphpMyAdmin591CONTENTSxivSettingupadatabaseinMySQL591Creatingalocaldatabasefortesting591Understandingcollation592CreatinguseraccountsforMySQL593ChangingtheMySQLrootpasswordinphpMyAdmin593Grantinguserprivileges594Howadatabasestoresinformation597Howprimarykeyswork597Designingadatabasetable598Choosingthetablename599Decidinghowmanycolumnstocreate600ChoosingtherightcolumntypeinMySQL600Decidingwhetherafieldcanbeempty602Creatingauserregistrationsystem603Definingthedatabasetable603TellingDreamweaverhowtoconnecttothedatabase607Troubleshootingtheconnection609Insertinguserdetailsintothedatabase609Usingserverbehaviorswithsite-root-relativelinks614Retrievinginformationfromthedatabase614Editingandremovingserverbehaviors617Displayingtheresultsofarecordset617Displayingmultipleresultswitharepeatregion620Updatinganddeletingrecords621Retrievingadatabaserecordusingitsprimarykey624UsingtheRecordUpdateFormWizard626Deletingarecord629Displayingdifferentcontentwhenarecordsetisempty633Chapterreview635Chapter15:ValidatingDatabaseInputandUserAuthentication.
.
.
637AnalyzingthecodegeneratedbyDreamweaver639Inspectingtheserverbehaviorcode639Connectingtothedatabase639PreventingSQLinjection640Insertingarecordintoadatabase640Understandingwhyaredirectdoesn'twork642Updatingadatabaserecord642Deletingarecord642DistinguishingbetweenFormVariableandURLParameter643Retrievingdatabaserecordswitharecordset643Creatingarepeatregion644Addingserver-sidevalidation645Verifyingthatrequiredfieldshavebeenfilledin646Verifyingandencryptingthepassword648Dealingwithduplicateusernames650Displayingtheerrormessages652CONTENTSxvBuildingcustomserverbehaviors654CreatingaStickyTextFieldserverbehavior654CreatingaserverbehaviorforStickyTextAreas656Completingtheuserregistrationform657Preservinguserinputintextfields657Applyingadynamicvaluetoaradiogroup658Applyingserver-sidevalidationtotheupdateform661Mergingthevalidationandupdatecode662AdaptingtheStickyTextFieldserverbehavior666Bindingthefieldvaluestotheupdateform668Whatsessionsareandhowtheywork671CreatingPHPsessions672Creatinganddestroyingsessionvariables672Destroyingasession672Checkingthatsessionsareenabled673Registeringandauthenticatingusers673Creatingaloginsystem674Displayingdifferentcontentdependingonaccesslevels677Greetingusersbyname678Creatingyourown$_SESSIONvariablesfromuserdetails679Redirectingtoapersonalpageafterlogin679Encryptinganddecryptingpasswords680Chapterreview680Chapter16:WorkingwithCustomFormsandMultipleTables.
.
.
683Storingrelatedinformationinseparatetables684Decidingonthebeststructure685Usingforeignkeystolinkrecords685Avoidingorphanedrecords687Definingthedatabasetables688Addinganindextoacolumn690DefiningtheforeignkeyrelationshipinInnoDB690Populatingthetables695Restoringthecontentofthetables695Selectingrecordsfrommorethanonetable696ThefouressentialSQLcommands700SELECT700INSERT704UPDATE704DELETE704Managingcontentwithmultipletables705Insertingnewquotations706UsingaMySQLfunctionandaliastomanipulatedata709ApplyingtheInsertRecordserverbehaviortoacustomform711SettingvaluesmanuallyintheColumnsfield712Insertingnewauthorsintheparenttable714UsingvariablesinaSQLquery715CONTENTSxviPagingthroughalonglistofdatabaseresults720Returningtothesamepageinalonglistofresults726Deletingauthorsfromtheparenttable728Improvingthedeleteform732PerformingacascadingdeletewithInnoDBtables733Updatingquotationsinthechildtable735Solvingthemysteryofmissingrecordswithaleftjoin736Deletingquotations739Chapterreview740Chapter17:HandlingCheckboxGroups,Searches,andDates.
.
.
743StoringmultiplevaluesinaSETcolumn744DefiningaSETcolumn745InsertingdataintoaSETcolumn747RetrievingdatastoredinaSETcolumn750Gettingtheinformationyouwantfromadatabase754UnderstandinghowDreamweaverbuildsaSQLquery754TroubleshootingSQLqueries758ChoosingGETorPOSTforsearchforms759Usingnumericalcomparisons760Searchingwithinanumericalrange763Searchingfortext766Makingasearchcase-sensitive766Displayingamessagewhennoresultsarefound766Searchingmultiplecolumns768Usingwildcardcharactersinasearch768UsingaFULLTEXTindex772SearchingforvaluesstoredinaSETcolumn774Countingrecords774CountingrecordsinaSETcolumn775Eliminatingduplicatesfromarecordset776Buildingcomplexsearches776Enhancingthedisplayofsearchresults778Displayingthenumberofsearchresults778Creatingstripedtablerows779Displayinglinebreaksintext781Reusingarecordset781Understandinghowarepeatregionworks784Formattingdatesandtime785StoringthecurrentdateandtimeinMySQL785StoringotherdatesinMySQL790UsingDATE_FORMAT()tooutputuser-friendlydates796WorkingwithdatesinPHP798Settingthecorrecttimezone799CreatingaUnixtimestamp799FormattingdatesinPHP800Chapterreview802CONTENTSxviiChapter18:UsingXSLTtoDisplayLiveNewsFeedsandXML.
.
.
805AquickguidetoXMLandXSLT806WhatanXMLdocumentlookslike806UsingHTMLentitiesinXML808UsingXSLTtodisplayXML809Checkingyourserver'ssupportforXSLT809PullinginanRSSnewsfeed811HowDreamweaverhandlesserver-sideXSLT812UsingXSLTtoaccesstheXMLsourcedata813Displayingthenewsfeedinawebpage820FixingabugintheXSLTransformationserverbehavior822BeingabitmoreadventurouswithXSLT824SettingupalocalXMLsource825UnderstandinghowXSLTisstructured827Definingnewentities827EmbeddingHTMLinXSLT827Accessingnestedrepeatingelements828Creatingconditionalregions830Testingasinglecondition830Testingalternativeconditions831Sortingelements833Formattingelements834Displayingoutputselectively835FilteringnodeswithXPath835UsingXSLTparameterstofilterdata837Chapterreview841Chapter19:UsingSpryDataSetstoRefreshContent843CreatingaSprydatasetfromHTML845GeneratingtheHTMLsource846UsingtheSpryDataSetwizard850DisplayingadatasetinaSprytable851DisplayingrelateddatainaSprydetailregion859Creatingamaster-detailsetinasingleoperation862Displayingadatasetasalist864UnderstandingtheSprydatacode867What'sthedifferencebetweenrepeatandrepeatchildren868Switchingdatasetsdynamically870FilteringaSprydataset870CreatingaSpryselectlist872UsingaSpryselectlisttochangepagecontent874CreatingaSprydatasetfromXML879UsingtheSpryDataSetwizardwithanXMLdocument879ValidatingpagesthatuseSpry884Chapterreview887CONTENTSxviiiChapter20:DeployingYourSiteontheInternet889Uploadingyourwebpages890Uploadingawholesite890Cloakingfilesnotrequiredontheremoteserver891Synchronizingasite893Selectingrecentlymodifiedfiles895Viewingthelocalandremotesitessidebyside896Uploadingdependentfiles898Transferringdatabasetables899ConfiguringtheremoteMySQLconnection901Chapterreview903Appendix:GeneratingXMLwithPHPConvertingarecordsettogenerateXML906Usingaproxyscripttofetcharemotefeed910UsingastaticXMLdocumentasacache912SettingpermissionforPHPtowritefiles912UsingPHPtowritetoafile912Index917CONTENTSxixABOUTTHEAUTHORDavidPowersisanAdobeCommunityExpertandAdobeCertifiedInstructorforDreamweaverandauthorofaseriesofhighlysuccessfulbooksonPHP,includingPHPSolutions:DynamicWebDesignMadeEasy(friendsofED,ISBN:978-1-59059-731-6)andPHPObject-OrientedSolutions(friendsofED,ISBN:978-1-4302-1011-5),aswellastheDreamweaverCS3editionofthisbook.
Asaprofessionalwriter,hehasbeeninvolvedinelectronicmediaformorethan30years,firstwithBBCradioandtelevisionandmorerecentlywiththeInternet.
HisclearwritingstyleisvaluednotonlyintheEnglish-speakingworld;severalofhisbookshavebeentranslatedintoSpanishandPolish.
Whatstartedasamildinterestincomputingwastransformedalmostovernightintoapassion,whenDavidwaspostedtoJapanin1987asBBCcorrespondentinTokyo.
WithnocorporateITdepartmentjustdownthehallway,hewasforcedtolearnhowtofixeverythinghimself.
Whennottinkeringwiththeinnardsofhiscomputer,hewasreportingforBBCTVandradioontheriseandcollapseoftheJapanesebubbleeconomy.
DavidhasalsotranslatedseveralplaysfromJapanese.
Torelax,heenjoysnothingbetterthanvisitinghisfavoritesushirestaurant.
AbouttheTechnicalReviewerTomMuckisthecoauthorofnineAdobe/Macromedia-relatedbooks.
TomalsowritesextensionsforDreamweaver,availableathissitehttp://www.
tom-muck.
com.
TomisalsotheleadPHPandColdFusionprogrammerforCartweaver,theonlineshoppingcartsoftwarepackage;isafoundingmemberofCommunityMX;andhaswrittenmorethan150articlesonPHP,ColdFusion,SQL,andrelatedtopics.
TomhasalsobeenanAdobeCommunityExpertinitsvariousincarnationssince1999.
TomisanextensibilityexpertfocusedontheintegrationofAdobe/MacromediaproductswithColdFusion,PHP,ASP,andotherlanguages,applications,andtechnologies.
Tomwasrec-ognizedforthisexpertisein2000whenhereceivedMacromedia'sBestUltraDevExtensionAward.
Hehasalsowrittennumerousarticlesformagazines,journals,andwebsitesandspeaksatconferencesonrelatedsubjects.
xxACKNOWLEDGMENTSManypeoplecontributedtothisbookinavarietyofways.
Some—liketheproductionstaffatApress/friendsofED—wereinvolveddirectly.
I'dliketopayparticularthankstomyeditor,BenRenow-Clarke,whogavemefreereintoshapethebookthewayIwantedbutalwaysmaintainedacriticaleyefromthereader'sperspective.
Thanks,too,toBethChristmasandKellyWinquistforkeepingtheprojectrunningsmoothlyandontime.
IwasdelightedwhenTomMuck,anacknowledgedDreamweaverexpert,agreedtoactasmytechnicalrevieweragain.
Hesavedmefromseveralembarrassingmistakes(anythatremainaremyresponsibilityalone),andhisdeepknowledgeofDreamweaverandotherwebtech-nologiesaddedvaluableperspectivethroughoutthebook.
I'malsogratefultoDevinFernandezandScottFegetteofAdobe,whogavemeunparalleledaccesstotheDreamweaverdevelopmentteamandenduredmyrantsandcomplaintswithgoodhumorwhenIdidn'tlikesomeofthechangesbeingmadetomyfavoritewebdevel-opmentprogram.
Thanksforrestoringthecoloredicons,guys.
Well,thatandeverythingelse—thisversionisastunner.
Othersareprobablytotallyunawareoftheroletheyplayedinshapingthisbook,butitwasnonethelesssignificant.
I'mreferringtoparticipantsinthefriendsofEDandAdobeonlineforums,whoaskedhowtodocertainthingswithDreamweaver,JavaScript,orPHP.
Manyoftheirideashavebeenwovenintothisnewedition.
Finally,thankyouforchoosingmybook.
xxiINTRODUCTIONDreamweaverisn'tadifficultprogramtouse,butit'sdifficulttousewell.
IhavebeenusingDreamweaveronadailybasisforaboutnineyears,pushingittothelimitandfindingoutitsgoodpoints—anditsbadones,too.
TheuserinterfacehaschangedconsiderablyinDreamweaverCS4,andtheintroductionofnewfeatures,suchasRelatedFilesandLiveview,islikelytohaveabigimpactonthewayevenlong-termDreamweaveruserscreatewebpages.
TheideaofthisbookistohelpyougetthebestoutofDreamweaverCS4,withparticularemphasisonbuildingdynamicwebpagesusingCascadingStyleSheets(CSS),Spry—theAdobeimplementationofAjax—andotherJavaScriptframeworks,andtheopensourceserver-sidetechnologyPHP.
ButhowcanyougetthebestoutofthisbookWhothisbookisforIliketocreditmyreaderswithintelligence,sothisbookisn't"DreamweaverCS4fortheClueless"or"DreamweaverCS4forCompleteBeginners.
"Youdon'tneedtobeanexpert,butyoudoneedtohaveaninquiringmind.
Itdoesn'tteachthebasicsofwebdesign,nordoesitattempttolisteverysinglefeatureinDreamweaverCS4.
Theemphasisisonbuildingmodern,standards-compliantwebsites.
Ifyou'reathomewiththebasicsofHTMLandCSS,thenthisbookisforyou.
Ifyouhaveneverbuiltawebsitebeforeanddon'tknowthedifferencebetweenantagandyourAuntJemima,youmightfindthisbookabitofastruggle.
IfrequentlydiveintoCodeviewandexpectyoutorollupyoursleevesandgettogripswiththecode.
It'snotcodingforcoding'ssake;theideaistoadaptthecodegeneratedbyInthisedition,IuseHTMLtoreferequallytoHypertextMarkupLanguageandExtensibleHypertextMarkupLanguage(XHTML).
HTML4.
01andXHTML1.
0areessen-tiallythesame.
TheonlydifferenceisthatXHTML1.
0appliesstricterrulesinthewayitiswritten(seehttp://www.
w3.
org/TR/xhtml1/#diffsforthedetails).
AllthecodeexamplesadheretotherulesofXHTML1.
0,thedefaultsettinginDreamweaverCS4.
xxiiDreamweavertocreatewebsitesthatreallywork.
IexplaineverythingasIgoalongandsteerclearofimpenetrablejargon.
AsforCSS,youdon'tneedtobeacandidateforinclusionintheCSSZenGarden(http://www.
csszengarden.
com),butyoushouldunderstandthebasicprinciplesbehindcreatingastylesheet.
WhataboutAjaxandPHPIdon'tassumeanypriorknowledgeinthesefields.
Ajaxcomesinmanydifferentguises;thisbookconcentratesmainlyonSpry,theAdobeAjaxframework(codelibrary)thatisintegratedintoDreamweaverCS4.
MostSpryfeaturesareaccessedthroughintuitivedialogboxes.
However,Chapter8getsinsidethecode,exploringnotonlySpry,buttheimprovedsupportinDreamweaverCS4forotherJavaScriptlibraries,suchasjQuery(http://jquery.
com/)andtheYahoo!
UserInterface(YUI)Library(http://developer.
yahoo.
net/yui).
DreamweaveralsotakescareofalotofthePHPcoding,butitcan'tdoeverything,soIshowyouhowtocustomizethecodeitgenerates.
Chapter10servesasacrashcourseinPHP,andChapter11putsthatknowledgetoimmediateusebyshowingyouhowtosendanemailfromanonlineform—oneofthethingsthatDreamweaverdoesn'tautomate.
Thisbookdoesn'tattempttoteachyouhowtobecomeaPHPprogrammer,butbythetimeyoureachthefinalchapter,youshouldhavesufficientconfidencetolookascriptintheeyewithoutflinching.
"DoIneedDreamweaverCS4"Mostdefinitely,yes.
AlthoughthePHPfeaturesremainbasicallyunchangedsinceDreamweaver8.
0.
2,thechangestotheDocumentwindowandPropertyinspectoraresosubstantialthatyouwouldhaveconsiderabledifficultyusingthisbookwithanearlierversionofDreamweaver.
Ifyou'restillusingDreamweaverCS3,getacopyoftheCS3versionofthisbook.
IfyouwanttousePHPinanearlierversionofDreamweaver,IsuggestyoureadmyFoundationPHPforDreamweaver8(friendsofED,ISBN:978-1-59059-569-5)instead.
Inevitably,somethingshavechangedsincethosebookswerepublished,butallimportantcorrectionsandupdatesarelistedontherelevanterratapagesathttp://friendsofed.
com/.
What'sdifferentfromtheCS3editionIhateitwhenIbuyabookandfindmyselfreadingfamiliarpageafterfamiliarpage.
ThisbookisarevisededitionofTheEssentialGuidetoDreamweaverCS3withCSS,Ajax,andPHP(friendsofED,ISBN:978-1-59059-859-7),updatedtotakeaccountofthechangesinDreamweaverCS4.
Mostoftheexamplesareinheritedfromthepreviousedition,butmanyofthemhavebeenreworkedtotakeadvantageofnewfeatures,suchasLiveview,RelatedFiles,andtheCodeNavigator.
IhavealsoreorganizedtheexerciseswiththePHPserverbehaviorsinwhatIhopeyouwillagreeisamorelogicalsequence.
Chapter14offersagen-tlerintroductiontointeractionwithadatabasebeforetacklingthevitalsubjectofserver-sidevalidationinChapter15.
INTRODUCTIONxxiiiIhavealsodevotedmoreattentiontoworkingwithSpry,aswellaswithotherJavaScriptlibraries.
Chapter8exploreshand-codingwithSpryandintroduceswebwidgetsthatusejQueryandtheYUILibrary.
Everychapterhasbeencompletelyrevisedandrewritten,andIhaveaddedachapteronthebasicsofinsertingcontentinawebpageinDreamweaver.
Thisismainlyforthebenefitofreadersmigratingfromanotherwebdevelopmentprogram,suchasAdobeGoLive,whichhasnowbeendiscontinued.
Itwillalsohelpnewcomerstowebdevelopment.
However,asImentionedearlier,youshouldalreadyknowthebasicsofHTMLandCSS.
Anothernewchap-terdealswiththemechanicsofdeployingadatabase-drivenwebsiteontheInternet.
You'llfinddetailsofallthemajornewfeaturesinDreamweaverCS4inthefollowingchapters:Chapter1coversthechangestotheuserinterface,LiveCode,andscreensharing.
Chapter2describeshowtointegrateyoursiteswithSubversionversioncontrol.
Chapter3showsyouhowtoworkwithPhotoshopSmartObjects.
InChapter4you'llbeginworkingwiththeRelatedFilestoolbarandLiveview,andinChapter6you'reintroducedtotheCodeNavigator—newtoolsthatareusedthroughoutthebook.
Chapter8coverstheJavaScriptExtractorandJavaScriptwebwidgets.
Chapter13describesindetailhowtopreparepagesforusewithAdobe'snewonlineservice,InContextEditing.
Chapter19showsyouhowtousetheSpryDataSetwizardtocreatedatasetsfrombothHTMLandXMLdatasourcesinavisuallyintuitiveway.
Eventhoughthisbookisabout200pageslongerthanthepreviousedition,therearesomanynewfeaturesinDreamweaverCS4thatIneededtodropsomematerial.
Withreluctance,IdecidedtheinstallationinstructionsforApache,PHP,andMySQLintheDreamweaverCS3editionhadtogo.
Ididthisforseveralreasons.
Coveringeverycombinationofoperatingsys-temandsoftwarewasbecomingtoocomplicated.
SeparateinstructionsareneededforWindowsXPandVista,aswellasforMacOSX10.
4and10.
5.
WiththereleaseofMySQL5.
1,PHP5.
3,andMacOSX10.
6expectedduringthelifetimeofthisbook,printedinstructionsrapidlygooutofdate.
Perhapsmostimportantly,theall-in-oneinstallationpackages—XAMPPforWindows(http://www.
apachefriends.
org/en/xampp-windows.
html)andMAMPforMacOSX(http://www.
mamp.
info/en/mamp.
html)—arereliableandeasytoinstall.
Windows-andMac-friendlyIhavepersonallytestedeverythinginthisbookinWindowsandMacOSX.
Theoverwhelm-ingmajorityofscreenshotsweretakenonWindowsVista,butIhaveincludedseparatescreenshotsfromtheMacversionwhereappropriate.
Ihavealsopointedoutsignificantdif-ferencesbetweentheWindowsandMacversionsofDreamweaver,althoughtherearen'tmanyofthem.
KeyboardshortcutsaregivenintheorderWindows/Mac,andIpointoutwhenaparticularshortcutisexclusivetoWindows(someDreamweavershortcutsconflictwithExposéandxxivINTRODUCTIONSpotlightintheMacversion).
TheonlyplacewhereIhaven'tgiventheMacequivalentiswithregardtoright-clicking.
SincetheadventofMightyMouse,right-clickingisnownativetotheMac,butifyou'reanold-fashionedkindofguyorgalandstilluseaone-buttonmouse,Ctrl-clickwheneverItellyoutoright-click(I'msureyouknewthatanyway).
SomeMackeyboardshortcutsusetheOption(Opt)key.
Ifyou'renewtoaMacandcan'tfindanOptkeyonyourkeyboard,insomecountriesit'slabeledAlt.
TheCommand(Cmd)keyhasanappleand/oracloverleafsymbol.
UsingthedownloadfilesAllthenecessaryfilesforinthisbookcanbedownloadedfromhttp://www.
friendsofed.
com/downloads.
html.
Thefilesarearrangedinfivetop-levelfolders,asfollows:examples:Thiscontainsthe.
htmland.
phpfilesforalltheexamplesandexercises,arrangedbychapter.
UsetheFileComparefeatureinDreamweaver(seeChapter2)tocheckyourowncodeagainstthesefiles.
Someexercisesprovidepartiallycom-pletedfilesforyoutoworkwith.
Whereindicated,copythenecessaryfilesfromthisfoldertotheworkfilesfoldersoyoualwayshaveabackupifthingsgowrong.
TheeasiestwaytodothisistoopenthefileintheexamplesfolderanduseFileSaveAstosavethefiletoitsnewdestination.
extras:ThiscontainsaDreamweaverextensionthatloadsasuiteofusefulPHPcodefragmentsintotheSnippetspanel,aswellasasavedqueryfortheFindandReplacepanel,andSQLfilestoloaddatafortheexercisesintoyourdatabase.
images:Thiscontainsalltheimagesusedintheexercisesandonlinegallery.
SpryAssets:ThiscontainsthefinishedversionsofSpry-relatedstylesheets.
Withoneexception,itdoesnotcontaintheexternalJavaScriptfilesneededtodisplaySpryeffects,widgets,ordatasets.
DreamweavershouldcopytheJavaScriptfilesanduneditedstylesheetstothisfolderautomaticallywhenyoudotheexercisesasdescribedinthisbook.
workfiles:Thisisanemptyfolder,whereyoushouldbuildthepagesusedintheexercises.
Copythesefolderstothetoplevelofthesitethatyoucreateforworkingwiththisbook(seeChapter2).
SupportforthisbookEveryefforthasbeenmadetoensureaccuracy,butmistakesdoslipthrough.
Ifyoufindwhatyouthinkisanerror—andit'snotlistedonthebook'scorrectionspageathttp://www.
friendsofed.
com—pleasesubmitanerrorreporttohttp://www.
friendsofed.
com/errataSubmission.
html.
WhenEDhasfinishedwiththethumbscrewsandgotmetoadmitI'mwrong,we'llpostthedetailsforeveryone'sbenefitonthefriendsofEDsite.
IalsoplanxxvINTRODUCTIONtopostdetailsonmyownwebsiteathttp://foundationphp.
com/dwcs4/updates.
phpofchangestoDreamweaverorothersoftwarethataffectinstructionsinthebook.
Iwantyoutogetthebestoutofthisbookandwilltrytohelpyouifyourunintodifficulty.
Beforecallingforassistance,though,startwithalittleself-help.
Throughoutthebook,Ihaveadded"Troubleshooting"sectionsbasedheavilyonfrequentlyaskedquestions,togetherwithmyownexperienceofthingsthatarelikelytogowrong.
MakeuseoftheFileComparefeatureinDreamweavertocheckyourcodeagainstthedownloadfiles.
Ifyou'reusingasoft-warefirewall,tryturningitofftemporarilytoseewhethertheproblemgoesaway.
Ifnoneoftheseapproachessolvesyourproblem,scanthechaptersubheadingsinthe"Contents"section,andtrylookingupafewrelatedexpressionsintheindex.
AlsotryaquicksearchontheInternet:Googleandtheotherlargesearchenginesareyourfriends.
Myapologiesifallthissoundsobvious,butanamazingnumberofpeoplespendmoretimewait-ingforananswerinanonlineforumthanitwouldtaketogothroughthesesimplesteps.
Ifyou'restillstuck,visithttp://www.
friendsofed.
com/forums/.
Usethefollowingguidelinestohelpothershelpyou:Alwayscheckthebook'supdatesandcorrectionspages.
Theanswermayalreadybethere.
Searchtheforumtoseewhetheryourquestionhasalreadybeenanswered.
Giveyourmessageameaningfulsubjectline.
It'slikelytogetaswifterresponseandmayhelpotherswithasimilarproblem.
Saywhichbookyou'reusing,andgiveapagereferencetothepointthat'sgivingyoudifficulty.
Giveprecisedetailsoftheproblem.
"Itdoesn'twork"givesnoclueastothecause.
"WhenIdosoandso,xhappens"isalotmoreinformative.
Ifyougetanerrormessage,saywhatitcontains.
Bebriefandtothepoint.
Don'taskhalfadozenquestionsatonce.
It'softenhelpfultoknowyouroperatingsystem,andifit'saquestionaboutPHP,whichversionofPHPandwhichwebserveryou'reusing.
Don'tpostthesamequestionsimultaneouslyinseveraldifferentforums.
Ifyoufindtheanswerelsewhere,havethecourtesytoclosetheforumthreadandpostalinktotheanswer.
ThehelpIgiveinthefriendsofEDandAdobeforumsisnotlimitedtoproblemsarisingfrommybooks,butpleaseberealisticinyourexpectationswhenaskingforhelpinafreeonlineforum.
AlthoughtheInternetneversleeps,thevolunteerswhoanswerquestionscertainlydo.
They'realsobusypeople,whomightnotalwaysbeavailable.
Don'tposthundredsoflinesofcodeandexpectsomeoneelsetoscouritformistakes.
Andifyoudogetthehelpthatyouneed,keepthecommunityspiritalivebyansweringquestionsthatyouknowtheanswerto.
xxviINTRODUCTIONLayoutconventionsTokeepthisbookasclearandeasytofollowaspossible,thefollowingtextconventionsareusedthroughout.
Importantwordsorconceptsarenormallyhighlightedonthefirstappearanceinboldtype.
Codeispresentedinfixed-widthfont.
Neworchangedcodeisnormallypresentedinboldfixed-widthfont.
Pseudo-codeandvariableinputarewritteninitalicfixed-widthfont.
MenucommandsarewrittenintheformMenuSubmenuSubmenu.
WhereIwanttodrawyourattentiontosomething,I'vehighlighteditlikethis:Sometimescodewon'tfitonasinglelineinabook.
Wherethishappens,Iuseanarrowlikethis:.
Thisisavery,verylongsectionofcodethatshouldbewrittenallonthesamelinewithoutabreak.
Ahem,don'tsayIdidn'twarnyou.
xxviiINTRODUCTION
iON Cloud怎么样?iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠谱,在线率高,国内直连线路,适合建站等用途,支付宝、微信付款购买。支持Windows server 2012、2016、2019中英文版本以及主流Linux发行...
ThomasHost域名注册自2012年,部落最早分享始于2016年,还算成立了有几年了,商家提供基于KVM架构的VPS,数据中心包括美国、法国、英国、加拿大和爱尔兰等6个地区机房,VPS主机套餐最低2GB内存起步,支持Windows或者Linux操作系统,1Gbps端口不限制流量。最近商家提供了一个5折优惠码,优惠后最低套餐月付5美元起。下面列出部分套餐配置信息。CPU:1core内存:2GB硬...
华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供香港和美国机房的VPS云服务器和独立服务器。商家支持支付宝、网银、Paypal付款。华纳云主要面向国内用户群,所以线路质量还是不错的,客户使用体验总体反响还是比较好...
headersalreadysent为你推荐
!'UIDETO"UILDING3ECURE7EB!PPLICATIONShttp500ZTCS500在哪能下载手机QQ?开启javascript怎么在浏览器中启用JavaScript?德国iphone禁售令苹果手机禁售了 我想问问 这两天刚买的8p现在禁售了 我是赔手里了还是没啥事 是幸运的还是倒霉的建企业网站怎么建企业网站cisco2960配置Cisco2960是二层交换机,怎么可以进入配置界面进行配置。不是说二层交换机不需要配置吗?重庆网站制作请问一下重庆网站建设哪家公司做得好,价格又便宜哦?宜人贷官网宜人贷是不是骗人的三友网网测是什么意思?徐州商标介绍徐州的一种产品
网站域名空间 下载虚拟主机 greengeeks singlehop vultr美国与日本 webhosting 贵州电信宽带测速 台湾谷歌网址 炎黄盛世 183是联通还是移动 泉州电信 速度云 1g内存 稳定免费空间 免费网络 apnic 服务器是什么意思 tracert 留言板 主机配置 更多