Messagesheadersalreadysent

headersalreadysent  时间:2021-04-12  阅读:()
PHPSolutionsDynamicWebDesignMadeEasyThirdEditionDavidPowersPHPSolutions:DynamicWebDesignMadeEasy,ThirdEditionCopyright2014byDavidPowersThisworkissubjecttocopyright.
AllrightsarereservedbythePublisher,whetherthewholeorpartofthematerialisconcerned,specificallytherightsoftranslation,reprinting,reuseofillustrations,recitation,broadcasting,reproductiononmicrofilmsorinanyotherphysicalway,andtransmissionorinformationstorageandretrieval,electronicadaptation,computersoftware,orbysimilarordissimilarmethodologynowknownorhereafterdeveloped.
Exemptedfromthislegalreservationarebriefexcerptsinconnectionwithreviewsorscholarlyanalysisormaterialsuppliedspecificallyforthepurposeofbeingenteredandexecutedonacomputersystem,forexclusiveusebythepurchaserofthework.
DuplicationofthispublicationorpartsthereofispermittedonlyundertheprovisionsoftheCopyrightLawofthePublisher'slocation,initscurrentversion,andpermissionforusemustalwaysbeobtainedfromSpringer.
PermissionsforusemaybeobtainedthroughRightsLinkattheCopyrightClearanceCenter.
ViolationsareliabletoprosecutionundertherespectiveCopyrightLaw.
ISBN-13(pbk):978-1-4842-0636-2ISBN-13(electronic):978-1-4842-0635-5Trademarkednames,logos,andimagesmayappearinthisbook.
Ratherthanuseatrademarksymbolwitheveryoccurrenceofatrademarkedname,logo,orimageweusethenames,logos,andimagesonlyinaneditorialfashionandtothebenefitofthetrademarkowner,withnointentionofinfringementofthetrademark.
Theuseinthispublicationoftradenames,trademarks,servicemarks,andsimilarterms,eveniftheyarenotidentifiedassuch,isnottobetakenasanexpressionofopinionastowhetherornottheyaresubjecttoproprietaryrights.
Whiletheadviceandinformationinthisbookarebelievedtobetrueandaccurateatthedateofpublication,neithertheauthorsnortheeditorsnorthepublishercanacceptanylegalresponsibilityforanyerrorsoromissionsthatmaybemade.
Thepublishermakesnowarranty,expressorimplied,withrespecttothematerialcontainedherein.
ManagingDirector:WelmoedSpahrLeadEditor:BenRenow-ClarkeTechnicalReviewer:PaulMilbourneEditorialBoard:SteveAnglin,MarkBeckner,EwanBuckingham,GaryCornell,LouiseCorrigan,JimDeWolf,JonathanGennick,RobertHutchinson,MichelleLowman,JamesMarkham,MatthewMoodie,JeffOlson,JeffreyPepper,DouglasPundick,BenRenow-Clarke,DominicShakeshaft,GwenanSpearing,MattWade,SteveWeissCoordinatingEditor:ChristineRickettsCopyEditor:AprilRondeauCompositor:SPiGlobalIndexer:SPiGlobalArtist:SPiGlobalCoverDesigner:AnnaIshchenkoDistributedtothebooktradeworldwidebySpringerScience+BusinessMediaNewYork,233SpringStreet,6thFloor,NewYork,NY10013.
Phone1-800-SPRINGER,fax(201)348-4505,e-mailorders-ny@springer-sbm.
com,orvisitwww.
springeronline.
com.
ApressMedia,LLCisaCaliforniaLLCandthesolemember(owner)isSpringerScience+BusinessMediaFinanceInc(SSBMFinanceInc).
SSBMFinanceIncisaDelawarecorporation.
Forinformationontranslations,pleasee-mailrights@apress.
com,orvisitwww.
apress.
com.
ApressandfriendsofEDbooksmaybepurchasedinbulkforacademic,corporate,orpromotionaluse.
eBookversionsandlicensesarealsoavailableformosttitles.
Formoreinformation,referenceourSpecialBulkSales–eBookLicensingwebpageatwww.
apress.
com/bulk-sales.
Anysourcecodeorothersupplementarymaterialreferencedbytheauthorinthistextisavailabletoreadersatwww.
apress.
com.
Fordetailedinformationabouthowtolocateyourbook'ssourcecode,gotowww.
apress.
com/source-code.
iiiContentsataGlanceAbouttheAuthorxvAbouttheTechnicalReviewerxviiAcknowledgmentsxixIntroductionxxiChapter1:WhatIsPHP—AndWhyShouldICare1Chapter2:GettingReadytoWorkwithPHP7Chapter3:HowtoWritePHPScripts19Chapter4:LighteningYourWorkloadwithIncludes63Chapter5:BringingFormstoLife97Chapter6:UploadingFiles133Chapter7:UsingPHPtoManageFiles173Chapter8:GeneratingThumbnailImages207Chapter9:PagesThatRemember:SimpleLoginandMultipageForms235Chapter10:GettingStartedwithaDatabase273Chapter11:ConnectingtoaDatabasewithPHPandSQL299Chapter12:CreatingaDynamicPhotoGallery337Chapter13:ManagingContent357Chapter14:FormattingTextandDates383ContentsataGlanceivChapter15:PullingDatafromMultipleTables417Chapter16:ManagingMultipleDatabaseTables435Chapter17:AuthenticatingUserswithaDatabase465Index479vContentsAbouttheAuthorxvAbouttheTechnicalReviewerxviiAcknowledgmentsxixIntroductionxxiChapter1:WhatIsPHP—AndWhyShouldICare1HowPHPHasGrown1HowPHPMakesPagesDynamic2CreatingPagesThatThinkforThemselves3HowHardIsPHPtoUseandLearn4CanIJustCopyandPastetheCode5HowSafeIsPHP5WhatSoftwareDoINeedtoWritePHP5WhattoLookforWhenChoosingaPHPEditor5So,Let'sGetonwithIt6Chapter2:GettingReadytoWorkwithPHP7CheckingWhetherYourWebsiteSupportsPHP7DecidingWheretoTestYourPages8WhatYouNeedforaLocalTestEnvironment9IndividualProgramsoranAll-in-onePackage9SettingUponWindows10GettingWindowstoDisplayFilenameExtensions10ChoosingaWebServer10InstallinganAll-in-onePackageonWindows10ContentsviSettingUponMacOSX11InstallingMAMP11TestingandconfiguringMAMP11WheretoLocateYourPHPFiles(Windows&Mac)13UsingVirtualHosts14CheckingYourPHPSettings14DisplayingtheServerConfigurationwithphpinfo(14Editingphp.
ini16What'sNext18Chapter3:HowtoWritePHPScripts19PHP:TheBigPicture19TellingtheServertoProcessPHP20EmbeddingPHPinaWebpage20StoringPHPinanExternalFile21UsingVariablestoRepresentChangingValues21EndingCommandsWithaSemicolon24CommentingScripts24UsingArraystoStoreMultipleValues25PHP'sBuilt-inSuperglobalArrays26UnderstandingWhentoUseQuotes27MakingDecisions29MakingComparisons31UsingIndentingandWhitespaceforClarity32UsingLoopsforRepetitiveTasks32UsingFunctionsforPresetTasks32UnderstandingPHPClassesandObjects33DisplayingPHPOutput34UnderstandingPHPErrorMessages36PHP:AQuickReference38UsingPHPinanExistingWebsite38DataTypesinPHP39ContentsviiDoingCalculationswithPHP40Addingtoanexistingstring42AllYouEverWantedtoKnowAboutQuotes—andMore42CreatingArrays46TheTruthAccordingtoPHP50CreatingLoops54ModularizingCodewithFunctions57CreatingNewVariablesDynamically61PHPQuickChecklist62Chapter4:LighteningYourWorkloadwithIncludes63IncludingCodefromExternalFiles64IntroducingthePHPIncludeCommands64WherePHPLooksforIncludeFiles65ChoosingtheRightFilenameExtensionforIncludes68CreatingPageswithChangingContent77PreventingErrorswithIncludeFiles85SuppressingErrorMessagesonaLiveWebsite86ChoosingwheretoLocateyourIncludeFiles91Adjustingyourinclude_path91Whycan'tIUseSite-root-relativeLinkswithPHPIncludes93SecurityConsiderationswithIncludes95ChapterReview95Chapter5:BringingFormstoLife97HowPHPGathersInformationfromaForm97UnderstandingtheDifferenceBetweenPostandget99GettingformDatawithPHPSuperglobals102ProcessingandValidatingUserInput102CreatingaReusableScript102PreservingUserInputwhenaFormisIncomplete108FilteringOutPotentialAttacks110ContentsviiiSendingEmail113UsingAdditionalEmailHeadersSafely114HandlingMultiple-ChoiceFormElements122ChapterReview131Chapter6:UploadingFiles133HowPHPHandlesFileUploads133Checkingwhetheryourserversupportsuploads134Addingafileuploadfieldtoaform135Understandingthe$_FILESarray135Establishinganuploaddirectory138UploadingFiles139Movingthetemporaryfiletotheuploadfolder139CreatingaPHPFileUploadClass143DefiningaPHPclass143Checkinguploaderrors150Changingprotectedproperties154Explicitlychangingadatatype158Neutralizingpotentiallydangerousfiles159Preventingfilesfrombeingoverwritten163UploadingMultipleFiles166Howthe$_FILESarrayhandlesmultiplefiles166UsingtheUploadClass170PointstoWatchwithFileUploads171ChapterReview171Chapter7:UsingPHPtoManageFiles173CheckingthatPHPCanOpenaFile173ConfigurationSettingsthatAffectFileAccess174CreatingaFileStorageFolderforLocalTesting174ContentsixReadingandWritingFiles174ReadingFilesinaSingleOperation175OpeningandClosingFilesforRead/WriteOperations179ExploringtheFileSystem188InspectingaFolderwithScandir(188InspectingtheContentsofaFolderwithFilesystemIterator188RestrictingFileTypeswiththeRegexIterator191AccessingRemoteFiles196ConsumingNewsandOtherRSSFeeds196UsingSimpleXML197CreatingaDownloadLink203PHPSolution7-6:PromptingaUsertoDownloadanImage203ChapterReview205Chapter8:GeneratingThumbnailImages207CheckingYourServer'sCapabilities207ManipulatingImagesDynamically208MakingaSmallerCopyofanImage209ResizinganImageAutomaticallyonUpload226ExtendingaClass226UsingtheThumbnailUploadClass233ChapterReview233Chapter9:PagesThatRemember:SimpleLoginandMultipageForms235WhatSessionsAreandHowTheyWork235CreatingPHPSessions238CreatingandDestroyingSessionVariables238DestroyingaSession239RegeneratingtheSessionID239The"HeadersAlreadySent"Error239ContentsxUsingSessionstoRestrictAccess240PHPSolution9-1:ASimpleSessionExample240UsingFile-basedAuthentication244MakingPasswordsMoreSecure251PHPSolution9-6:CreatingaPassword-strengthChecker252SettingaTimeLimitonSessions264PHPSolution9-9:EndingaSessionafteraPeriodofInactivity265PassingInformationThroughMultipageForms267ChapterReview272Chapter10:GettingStartedwithaDatabase273WhichDatabaseShouldYouChoose273CompatibilityofMariaDBandMySQL274HowaDatabaseStoresInformation274Howprimarykeyswork275Linkingtableswithprimaryandforeignkeys276Breakingdowninformationintosmallchunks277Checkpointsforgooddatabasedesign278UsingaGraphicalInterface278LaunchingphpMyAdmin280SettingUpthephpsolsDatabase280MySQLnamingrules280UsingphpMyAdmintocreateanewdatabase281Creatingdatabase-specificuseraccounts282Creatingadatabasetable285Insertingrecordsintoatable287CreatinganSQLfileforbackupanddatatransfer291ChoosingtheRightDataTypeinMySQL295Storingtext295Storingnumbers295ContentsxiStoringdatesandtimes296Storingpredefinedlists296Storingbinarydata297ChapterReview297Chapter11:ConnectingtoaDatabasewithPHPandSQL299CheckingYourRemoteServerSetup299HowPHPCommunicateswithaDatabase301ConnectingwiththeMySQLImprovedextension302ConnectingwithPDO302PHPSolution11-1:Makingareusabledatabaseconnector303Queryingthedatabaseanddisplayingtheresults306UsingSQLtoInteractwithaDatabase313WritingSQLqueries313RefiningthedataretrievedbyaSELECTquery314UnderstandingtheDangerofSQLInjection318UsingPreparedStatementsforUserInput324EmbeddingvariablesinMySQLipreparedstatements325EmbeddingvariablesinPDOpreparedstatements329ChapterReview335Chapter12:CreatingaDynamicPhotoGallery337WhyNotStoreImagesinaDatabase338PlanningtheGallery338ConvertingtheGalleryElementstoPHP340BuildingtheDynamicElements343PassingInformationThroughaQueryString343CreatingaMulticolumntable347PagingThroughaLongsetofRecords349ChapterReview356ContentsxiiChapter13:ManagingContent357SettingUpaContentManagementSystem357CreatingtheBlogDatabaseTable358CreatingtheBasicInsertandUpdateForm359InsertingNewRecords360LinkingtotheUpdateandDeletePages365UpdatingRecords368DeletingRecords376ReviewingtheFourEssentialSQLCommands378SELECT378INSERT380UPDATE380DELETE381SecurityandErrorMessages381ChapterReview381Chapter14:FormattingTextandDates383DisplayingaTextExtract383ExtractingaFixedNumberofCharacters383EndinganExtractonaCompleteWord385ExtractingtheFirstParagraph385DisplayingParagraphs386ExtractingCompleteSentences387Let'sMakeaDate390HowMySQLHandlesDates390InsertingDatesintoMySQL394WorkingwithDatesinPHP400ChapterReview415ContentsxiiiChapter15:PullingDatafromMultipleTables417UnderstandingTableRelationships417LinkinganImagetoanArticle419AlteringtheStructureofanExistingTable419InsertingaForeignKeyinaTable421SelectingRecordsfromMultipleTables427FindingRecordsthatdon'thaveaMatchingForeignKey432CreatinganIntelligentLink433ChapterReview434Chapter16:ManagingMultipleDatabaseTables435MaintainingReferentialIntegrity435Supportforforeign-keyconstraints436Insertingrecordsintomultipletables439Creatingacross-referencetable441Gettingthefilenameofanuploadedimage442Adaptingtheinsertformtodealwithmultipletables443UpdatingandDeletingRecordsinMultipleTables454Updatingrecordsinacross-referencetable454Preservingreferentialintegrityondeletion457Creatingdeletescriptswithforeign-keyconstraints461Creatingdeletescriptswithoutforeign-keyconstraints462ChapterReview463Chapter17:AuthenticatingUserswithaDatabase465ChoosinganEncryptionMethod465UsingOne-WayEncryption466CreatingaTabletoStoreUsers'Details466RegisteringNewUsersintheDatabase466ContentsxivUsingTwo-WayEncryption473Creatingthetabletostoreusers'details474Registeringnewusers474Userauthenticationwithtwo-wayencryption475Decryptingapassword477UpdatingUserDetails477WhereNext477Index479xvAbouttheAuthorDavidPowersistheauthorofaseriesofhighlysuccessfulbooksandvideotrainingcoursesonwebdevelopment,withaparticularemphasisonPHPandwebstandards,includingIntroducingPHPandPHPCodeClinicinthelynda.
comOnlineTrainingLibrary.
Asaprofessionalwriter,hehasbeeninvolvedinelectronicmediaformorethan40years,firstwithBBCradioandtelevisionandmorerecentlywiththeInternet.
HisclearwritingstyleisvaluednotonlyintheEnglish-speakingworld,asseveralofhisbookshavebeentranslatedintoSpanish,Polish,Chinese,andotherlanguages.
Whatstartedasamildinterestincomputingwastransformedalmostovernightintoapassion,whenDavidwaspostedtoJapanin1987asBBCcorrespondentinTokyo.
WithnocorporateITdepartmentjustdownthehallway,hewasforcedtolearnhowtofixeverythinghimself.
Whennottinkeringwiththeinnardsofhiscomputer,hewasreportingforBBCtelevisionandradioontheriseandcollapseoftheJapanesebubbleeconomy.
SinceleavingtheBBCtoworkindependently,hehasworkedonmanyprojects,includingthedevelopmentofanonlinebilingualdatabaseofeconomicandpoliticalanalysisforJapaneseclientsofaninternationalconsultancy.
HealsoteachesapostgraduateWebMediacourseatOxfordBrookesUniversity.
WhennotpoundingthekeyboardwritingbooksordreamingofnewwaysofusingPHPandotherprogramminglanguages,Davidenjoysnothingbetterthanvisitinghisfavoritesushirestaurant.
HehastranslatedseveralplaysfromJapanese.
xviiAbouttheTechnicalReviewerPaulMilbournehasbeenasoftwaredeveloperintheWashington–Baltimoremetropolitanareaforoverdecade.
HisjourneyhasallowedhimtoworkwithsuchclientsastheWashingtonRedskins,BaltimoreRavens,ZyngaGames,andmanyothers.
Forthemostpart,Paulhasmadeahandsomecareerputtingoutfiresanddealingwithedgecases.
Thisexperiencehasexposedhimtomostaspectsofdevelopmentthroughamultitudeofindustriesandplatforms.
Paulisalsoaformerchef,anavidmusician,andapracticingfineartist.
xixAcknowledgmentsTheoriginalideatowritePHPSolutionscamefromChrisMills,myeditorformanyyearsatApress/friendsofED,who'snowaSeniorTechnicalWriteratMozillaCorporationandapassionateadvocateofwebstandards.
Chriswantedtomoveawayfromthecookbookformulaofisolatedsolutionsthatleftthereaderwithlittleornoideaaboutthepracticaluseofaparticulartechnique.
Thefactthatthisbookisnowinitsthirdeditionproveswhatagreatideaitwas.
Thanks,Chris.
Chris'ssuccessoraseditorofthesecondandthirdeditions,BenRenow-Clarke,followedhisexamplebygivingmefreereintoshapethebookaccordingtomyownideas,butalwaysputtinghimselfinthepositionofthereader,nudgingmeintherightdirectionwhenanexplanationwasn'tclearenoughorachapterwasbadlyorganized.
I'malsogratefultomytechnicalreviewers:SamuelWrightforthefirstedition,KristianBesleyandJasonNadonforthesecondedition,andPaulMilbourneforthisedition.
Eacheditionhasbuiltonthepreviousone,soideasandsuggestionsmadebyreviewersofpreviouseditionsliveoninthisone.
ProducingabooklikethiswouldbeimpossiblewithoutthediligenthelpofeveryoneintheproductionchainatApress.
Mythanksgotothemall.
Mostofall,mythanksgotothereaderswhohavemadethisbooksuchasuccess.
Welcometotheclub.
IhopeyouenjoythisbookandfinditusefulinbuildingdynamicwebsiteswithPHP.
xxiIntroductionWhenthefirsteditionofPHPSolutionswaspublished,Iwasconcernedthatthesubtitle,DynamicWebDesignMadeEasy,soundedoverambitious.
Evenwiththisthirdedition,itstillmakesmealittleapprehensiveaboutundulyraisingreaders'expectations.
PHPisnotdifficult,butnorisitlikeaninstantcakemix:justaddwaterandstir.
Everywebsiteisdifferent,soit'simpossibletograbascript,pasteitintoawebpage,andexpectittowork.
Myaimwastohelpwebdesignerswithlittleornoknowledgeofprogramminggaintheconfidencetodiveintothecodeandadjustittotheirownrequirements.
Thefactthatthebookhasremainedsopopularsinceitwasfirstpublishedin2006suggeststhatmanyreaderstookupthechallenge.
MembersofBostonPHPdidsoinlargenumberswhentheyadoptedthesecondeditionasthetextforthreeseriesofPHPPercolate,avirtualself-studygroupforbeginners.
Hundredssigneduptostudythebookonechapteraweek.
Itworkedforthem,soIhopeitwillworkjustaswellforyou.
What'sNewinthisEditionOneusefulpieceoffeedbackfromPHPPercolateparticipantsandotherreaderswasdisappointmentwhenIglossedoverasectionofadvancedcode,explainingonlywhatitdidratherthanhowitworked.
Thatomissionhasbeencorrectedinthisedition.
Occasionally,Ipointoutthatyoumightwanttoskipthedetailedexplanation,butit'sthereifyou'reintriguedbyhowatechniqueworks.
Asaresult,thereferencesectionofChapter3hasbeenexpandedtoincludesuchesotericdelightsasvariablevariables.
No,it'snotatypo;"variablevariable"isagenuineconceptinPHP.
It'salsoquiteuseful.
ThiseditionbringsthecontentuptodatewithPHP5.
6,whichwasreleasedinAugust2014.
BecausehostingcompaniesareoftenslowtoupgradetheversionofPHPthattheyoffer,I'vemadePHP5.
4theminimumversionforthecodeusedinthisbook.
PHP5.
4madesomeimportantchanges,introducingasimplifiedarraysyntaxanddroppingsupportforsafemodeand"magicquotes.
"Aswellasbringingthecodeuptodate,I'verevisedeverychapter,goingthroughitlinebyline,clarifyingexplanations.
I'vealsoeliminatedanumberoferrors—without,Ihope,introducingnewones.
ThebiggestchangesaretothecustomclassesforuploadingfilesandcreatingimagethumbnailsinChapters6and8.
Theynowusenamespacestoavoidnamingclasheswithotherthird-partycode.
Moreimportant,theclassdefinitionshavebeenextensivelyrewrittentomakethemmoreefficient.
AnothersignificantchangeistheuseofthenewpasswordhashingfunctionsinChapters9and17.
Thesefunctionsweren'tintroduceduntilPHP5.
5,butyoucanemulatetheminPHP5.
4byincludingthepassword_compatlibraryinyourscripts.
Detailsofhowtoobtainthelibrary,whichconsistsofasinglefile,canbefoundinChapter9.
Thechaptersonworkingwithadatabasehavebeenreorganizedtomakethemeasiertofollow.
I'vealsostrengthenedtheexplanationofpreparedstatements,usingbothMySQLImproved(MySQLi)andthedatabase-neutralPHPDataObjects(PDO).
SomeLinuxdistributionsnowinstallMariaDBasadrop-inreplacementforMySQL.
Toavoidunnecessaryrepetition,InormallyreferonlytoMySQL,butallthePHPsolutionsinthisbookworkequallywellwithMariaDB.
IntroductionxxiiHowThisBookIsOrganizedEachchaptertakesyouthroughaseriesofstagesinasingleproject,witheachstagebuildingonthepreviousone.
Byworkingthrougheachchapter,yougetthefullpictureofhoweverythingfitstogether.
Youcanlaterrefertotheindividualstagestorefreshyourmemoryaboutaparticulartechnique.
Althoughthisisn'tareferencebook,Chapter3isaprimeronPHPsyntax,andsomechapterscontainshortreferencesections—notablyChapter7(readingfromandwritingtofiles),Chapter9(sessions),Chapter10(datatypesinMySQL/MariaDB),Chapter11(PHPpreparedstatements),Chapter13(thefouressentialSQLcommands),andChapter14(workingwithdatesandtimes).
So,howeasyiseasyIhavedonemybesttoeaseyourpath,butthereisnomagicpotion.
Itrequiressomeeffortonyourpart.
Don'tattempttodoeverythingatonce.
Adddynamicfeaturestoyoursiteafewatatime.
Gettounderstandhowtheywork,andyoureffortswillbeamplyrewarded.
AddingPHPandMySQL/MariaDBtoyourskillswillenableyoutobuildwebsitesthatoffermuchrichercontentandaninteractiveuserexperience.
UsingtheExampleFilesAllthefilesnecessaryforworkingthroughthisbookcanbedownloadedfromtheApresswebsiteatwww.
apress.
com/9781484206362.
MakesureyouselectthedownloadlinkforPHPSolutions:DynamicWebDesignMadeEasy,ThirdEdition.
Thecodeisdifferentfromthefirsttwoeditions.
SetupaPHPdevelopmentenvironment,asdescribedinChapter2.
Unzipthefilesandcopythephpsolsfolderandallitscontentsintoyourwebserver'sdocumentroot.
Thecodeforeachchapterisinafoldernamedafterthechapter:ch01,ch02,andsoon.
FollowtheinstructionsineachPHPsolution,andcopytherelevantfilestothesiterootortheworkfolderindicated.
Whereapageundergoesseveralchangesduringachapter,Ihavenumberedthedifferentversionslikethis:index_01.
php,index_02.
php,andsoon.
Whencopyingafilethathasanumber,removetheunderscoreandnumberfromthefilename,soindex_01.
phpbecomesindex.
php.
IfyouareusingaprogramlikeDreamweaverthatpromptsyoutoupdatelinkswhenmovingfilesfromonefoldertoanother,donotupdatethem.
Thelinksinthefilesaredesignedtopickuptherightimagesandstylesheetswhenlocatedinthetargetfolder.
Ihavedonethissoyoucanuseafilecomparisonutilitytocheckyourfilesagainstmine.
Ifyoudon'thaveafilecomparisonutility,Istronglyurgeyoutoinstallone.
Itwillsaveyouhoursofheadscratchingwhentryingtospotthedifferencebetweenyourversionandmine.
Amissingsemicolonormistypedvariablecanbehardtospotindozensoflinesofcode.
WindowsuserscandownloadWinMergeforfreefromhttp://winmerge.
org/.
IuseBeyondCompare(www.
scootersoftware.
com),whichisnowavailableforWindows,MacOSX,andLinux.
It'snotfreebutisexcellentandreasonablypriced.
BBEditonaMacincludesafilecomparisonutility.
Alternatively,usethefilecomparisonfeatureinTextWrangler,whichcanbedownloadedfreefromwww.
barebones.
com/products/textwrangler/.
LayoutConventionsTokeepthisbookasclearandeasytofollowaspossible,thefollowingtextconventionsareusedthroughout:Importantwordsorconceptsarenormallyhighlightedonthefirstappearanceinboldtype.
Codeispresentedinfixed-widthfont.
Neworchangedcodeisnormallypresentedinboldfixed-widthfont.
Pseudo-codeandvariableinputarewritteninitalicfixed-widthfont.
MenucommandsarewrittenintheformMenuSubmenuSubmenu.
WhereIwanttodrawyourattentiontosomething,I'vehighlightedit,likethis:Ahem,don'tsayIdidn'twarnyou.

选择Vultr VPS主机不支持支付宝付款的解决方案

在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...

TMThosting:VPS月付55折起,独立服务器9折,西雅图机房,支持支付宝

TMThosting发布了今年黑色星期五的促销活动,即日起到12月6日,VPS主机最低55折起,独立服务器9折起,开设在西雅图机房。这是一家成立于2018年的国外主机商,主要提供VPS和独立服务器租用业务,数据中心包括美国西雅图和达拉斯,其中VPS基于KVM架构,都有提供免费的DDoS保护,支持选择Windows或者Linux操作系统。Budget HDD系列架构CPU内存硬盘流量系统价格单核51...

RackNerd美国大硬盘服务器促销:120G SSD+192TB HDD,1Gbps大带宽,月付$599,促销美国月付$服务器促销带宽

racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...

headersalreadysent为你推荐
serieshttp操作http深圳市福田区国民经济和社会发展cisco2960配置思科2960G交换机如何将配置百兆改为千兆配置tumblr上不去我家里的网络打不开个别网站123456hd手机上有电话的标志,后面有个HD是什么意思400电话查询能查出400电话是什么地区的吗免费代理加盟免费加盟代销怎么回事,能具体介绍下么申请400电话400电话如何申请?社区动力我是一名新入职社区员工,怎样做好社区工作?
如何注册域名 华为云服务 dreamhost bluehost edis 账号泄露 好看的桌面背景图片 商家促销 圣诞节促销 最好看的qq空间 我爱水煮鱼 双线主机 域名接入 百度云空间 lamp兄弟连 杭州电信宽带优惠 中国联通宽带测速 徐州电信 shuangcheng e-mail 更多