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.

搬瓦工:香港PCCW机房即将关闭;可免费升级至香港CN2 GIA;2核2G/1Gbps大带宽高端线路,89美元/年

搬瓦工怎么样?这几天收到搬瓦工发来的邮件,告知香港pccw机房(HKHK_1)即将关闭,这也不算是什么出乎意料的事情,反而他不关闭我倒觉得奇怪。因为目前搬瓦工香港cn2 GIA 机房和香港pccw机房价格、配置都一样,可以互相迁移,但是不管是速度还是延迟还是丢包率,搬瓦工香港PCCW机房都比不上香港cn2 gia 机房,所以不知道香港 PCCW 机房存在还有什么意义?关闭也是理所当然的事情。点击进...

HTTPS加密协议端口默认是多少且是否支持更换端口访问

看到群里网友们在讨论由于不清楚的原因,有同学的网站无法访问。他的网站是没有用HTTPS的,直接访问他的HTTP是无法访问的,通过PING测试可以看到解析地址已经比较乱,应该是所谓的DNS污染。其中有网友提到采用HTTPS加密证书试试。因为HTTP和HTTPS走的不是一个端口,之前有网友这样测试过是可以缓解这样的问题。这样通过将网站绑定设置HTTPS之后,是可以打开的,看来网站的80端口出现问题,而...

IMIDC(rainbow cloud):香港/台湾/日本/莫斯科独立服务器特价,闪购大促销,最低30usd/月起

imidc怎么样?imidc彩虹网路,rainbow cloud知名服务器提供商。自营多地区数据中心,是 Apnic RIPE Afrinic Arin 认证服务商。拥有丰富的网路资源。 在2021年 6.18 开启了输血大促销,促销区域包括 香港 台湾 日本 莫斯科 等地促销机型为 E3係,参与促销地区有 香港 日本 台湾 莫斯科 等地, 限量50台,售罄为止,先到先得。所有服务器配置 CPU ...

headersalreadysent为你推荐
manifestedasphttp404未找到"HTTP 404 未找到"的错误如何对付?_重庆网络公司一九互联重庆网络公司,重庆网络优化,重庆页面制作性价比高且便宜的网络公司有哪些?cisco2960配置思科的交换机怎么配置企业电子邮局求:什么是企业邮箱?(企业邮箱与普通个人邮箱的区别是什么?)申请支付宝账户申请支付宝账号注册开放平台众安开放平台是干什么的?上面的众推广是什么?银花珠树晓来看用黄皮比喻心酸的诗句刚刚网刚刚网上刷单被骗了5万多怎么办啊 报警有用吗电子商务世界电子商务最先起源于那个国家,什么时间
主机优惠码 omnis 贵州电信宽带测速 京东云擎 标准机柜尺寸 华为网络硬盘 200g硬盘 广州服务器 免费cdn shopex主机 google台湾 空间租赁 免费外链相册 监控服务器 网站防护 美国十大啦 magento主机 cloudflare ubuntu安装教程 西部主机 更多