คำถามติดแท็ก php

PHP เป็นภาษาสคริปต์ที่ใช้กันอย่างแพร่หลายในระดับสูงมีการเปลี่ยนแปลงเชิงวัตถุและมีการตีความที่ออกแบบมาเพื่อการพัฒนาเว็บเซิร์ฟเวอร์เป็นหลัก ใช้สำหรับคำถามเกี่ยวกับภาษา PHP

11
วิธีหลีกเลี่ยง isset () และว่าง ()
ฉันมีแอปพลิเคชันรุ่นเก่าหลายตัวที่ส่งข้อความ "xyz is undefined" และ "undefined offset" จำนวนมากเมื่อทำงานในระดับข้อผิดพลาด E_NOTICE เนื่องจากการมีอยู่ของตัวแปรไม่ได้รับการตรวจสอบอย่างชัดเจนโดยใช้isset()และรวบรวม ฉันกำลังพิจารณาดำเนินการผ่านสิ่งเหล่านี้เพื่อให้เข้ากันได้กับ E_NOTICE เนื่องจากการแจ้งเตือนเกี่ยวกับตัวแปรที่ขาดหายไปหรือการชดเชยอาจเป็นตัวช่วยชีวิตได้อาจมีการปรับปรุงประสิทธิภาพเล็กน้อยที่จะได้รับและโดยรวมแล้วเป็นวิธีที่สะอาดกว่า แต่ผมไม่ชอบสิ่งที่ก่อให้เกิดหลายร้อยisset() empty()และarray_key_exists()s ไม่ให้รหัสของฉัน มันป่องอ่านได้น้อยลงโดยไม่ได้รับคุณค่าหรือความหมายอะไรเลย ฉันจะจัดโครงสร้างโค้ดของฉันโดยไม่มีการตรวจสอบตัวแปรมากเกินไปได้อย่างไรในขณะเดียวกันก็เข้ากันได้กับ E_NOTICE

22
ฉันจะสร้างคำขอ GET แบบอะซิงโครนัสใน PHP ได้อย่างไร
ฉันต้องการส่งคำขอ GET อย่างง่ายไปยังสคริปต์อื่นบนเซิร์ฟเวอร์อื่น ฉันต้องทำอย่างไร ในกรณีหนึ่งฉันเพียงแค่ขอสคริปต์ภายนอกโดยไม่ต้องใช้เอาต์พุตใด ๆ make_request('http://www.externalsite.com/script1.php?variable=45'); //example usage ในกรณีที่สองฉันต้องได้รับเอาต์พุตข้อความ $output = make_request('http://www.externalsite.com/script2.php?variable=45'); echo $output; //string output บอกตามตรงว่าฉันไม่อยากยุ่งกับ CURL เพราะนี่ไม่ใช่หน้าที่ของ CURL จริงๆ ฉันไม่ต้องการใช้ประโยชน์จาก http_get เนื่องจากฉันไม่มีส่วนขยาย PECL fsockopen จะใช้ได้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะทำสิ่งนี้โดยไม่อ่านเนื้อหาของไฟล์ได้อย่างไร ไม่มีวิธีอื่นหรือ ขอบคุณทุกคน อัปเดต ฉันควรเพิ่มในกรณีแรกฉันไม่ต้องการรอให้สคริปต์ส่งคืนอะไร ตามที่ฉันเข้าใจ file_get_contents () จะรอให้เพจโหลดจนเสร็จ ฯลฯ ?
98 php  http  curl  asynchronous 

15
วิธีการซ่อมแซมสตริงที่เป็นอนุกรมซึ่งเสียหายจากความยาวนับไบต์ที่ไม่ถูกต้อง
ฉันใช้ Hotaru CMS กับปลั๊กอินอัพโหลดรูปภาพฉันได้รับข้อผิดพลาดนี้หากฉันพยายามแนบรูปภาพไปยังโพสต์มิฉะนั้นจะไม่มีข้อผิดพลาด: Unserialize () [function.unserialize]: เกิดข้อผิดพลาดที่ offset รหัสที่กระทำผิด (ข้อผิดพลาดชี้ให้สอดคล้องกับ **): /** * Retrieve submission step data * * @param $key - empty when setting * @return bool */ public function loadSubmitData($h, $key = '') { // delete everything in this table older than 30 minutes: $this->deleteTempData($h->db); if (!$key) …

12
ฉันจะเพิ่มโค้ด / ไฟล์ PHP ไปยังไฟล์ HTML (.html) ได้อย่างไร
ฉันไม่สามารถใช้ PHP ในหน้า HTML ของฉัน ตัวอย่างเช่นindex.html. ฉันได้ลองใช้ทั้งสองอย่าง: <? contents ?> และ <?php contents ?> ทั้งสองอย่างนี้ไม่ได้ผล เซิร์ฟเวอร์ของฉันให้บริการ PHP และเมื่อฉันใช้.phpส่วนขยายนี้จะทำงานได้อย่างถูกต้อง นี่เป็นปัญหาหรือฉันต้องเปลี่ยนการตั้งค่าในphp.ini?
98 php  html  file 

8
จะรับ innerHTML ของ DOMNode ได้อย่างไร?
คุณใช้ฟังก์ชันอะไรเพื่อรับ innerHTML ของ DOMNode ที่กำหนดในการใช้งาน PHP DOM ใครสามารถให้วิธีแก้ปัญหาที่เชื่อถือได้? แน่นอน outerHTML ก็จะทำเช่นกัน
98 php  dom  innerhtml 


7
ทดสอบส่วนหัวของ PHP ด้วย PHPUnit
ฉันกำลังพยายามใช้ PHPunit เพื่อทดสอบคลาสที่แสดงผลส่วนหัวที่กำหนดเอง ปัญหาคือบนเครื่องของฉันสิ่งนี้: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); $headers_list = headers_list(); header_remove(); ob_clean(); $this->assertContains('Location: foo', $headers_list); } } หรือแม้แต่สิ่งนี้: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); header_remove(); ob_clean(); } } ส่งคืนข้อผิดพลาดนี้: name@host [~/test]# phpunit --verbose …

13
การวินิจฉัยการรั่วไหลของหน่วยความจำ - ขนาดหน่วยความจำที่อนุญาตเป็น # ไบต์หมด
ฉันพบข้อความแสดงข้อผิดพลาดที่น่ากลัวซึ่งอาจเป็นไปได้ด้วยความพยายามอย่างเต็มที่ PHP มีหน่วยความจำไม่เพียงพอ: ขนาดหน่วยความจำที่อนุญาต #### ไบต์หมด (พยายามจัดสรร #### ไบต์) ใน file.php ในบรรทัด 123 เพิ่มขีด จำกัด หากคุณรู้ว่าคุณกำลังทำอะไรอยู่และต้องการเพิ่มขีด จำกัด โปรดดูmemory_limit : ini_set('memory_limit', '16M'); ini_set('memory_limit', -1); // no limit ระวัง! คุณอาจจะแก้ปัญหาได้เท่านั้นไม่ใช่ปัญหา! การวินิจฉัยการรั่วไหล: ข้อความแสดงข้อผิดพลาดชี้ไปที่เส้นที่มีการวนซ้ำซึ่งฉันเชื่อว่ามีการรั่วไหลหรือกำลังสะสมหน่วยความจำโดยไม่จำเป็น ฉันได้พิมพ์memory_get_usage()คำสั่งเมื่อสิ้นสุดการทำซ้ำแต่ละครั้งและสามารถเห็นจำนวนที่เพิ่มขึ้นอย่างช้าๆจนกว่าจะถึงขีด จำกัด : foreach ($users as $user) { $task = new Task; $task->run($user); unset($task); // Free the variable in an …
98 php  memory-leaks 

15
เลิกใช้งาน: mysql_connect ()
ฉันได้รับคำเตือนนี้ แต่โปรแกรมยังทำงานได้อย่างถูกต้อง รหัส MySQL แสดงข้อความใน PHP: เลิกใช้: mysql_connect (): ส่วนขยาย mysql เลิกใช้แล้วและจะถูกลบในอนาคต: ใช้ mysqli หรือ PDO แทนใน C: \ xampp \ htdocs \ task \ media \ new \ connect.inc.php ในบรรทัดที่ 2 connect.inc.phpเพจของฉันคือ <?php $connect = mysql_connect('localhost','root',''); mysql_select_db('dbname'); ?> สิ่งนี้หมายความว่าอย่างไรและฉันจะกำจัดข้อความได้อย่างไร

7
การติดตั้งเวอร์ชัน laravel เฉพาะด้วยผู้สร้างโครงการ
วิธีที่เร็วและง่ายที่สุดในการติดตั้ง Laravel คือใช้คำสั่ง composer จากเอกสาร laravel ( http://laravel.com/docs/quick ) แสดงว่าเราสามารถติดตั้งได้ด้วยสิ่งนี้: composer create-project laravel/laravel your-project-name --prefer-dist แต่เมื่อคุณเรียกใช้คำสั่งด้านบนมันจะคว้า Laravel เวอร์ชันล่าสุด ฉันจะควบคุมได้อย่างไรหากต้องการติดตั้ง 4.0.x เวอร์ชันล่าสุด หรือ 4.1.x เมื่อ 4.2 ออก?

9
ฉันจะระเบิดอาร์เรย์ในขณะที่ข้ามรายการอาร์เรย์ว่างได้อย่างไร
Perl join()ไม่สนใจ (ข้าม) ค่าอาร์เรย์ว่าง PHP implode()ไม่ปรากฏ สมมติว่าฉันมีอาร์เรย์: $array = array('one', '', '', 'four', '', 'six'); implode('-', $array); ผลตอบแทน: one---four--six แทนที่จะเป็น (IMHO เป็นที่ต้องการ): one-four-six มีตัวอื่นที่มีพฤติกรรมที่ฉันกำลังมองหาอยู่หรือไม่? หรือว่าจะเป็น jobbie ที่กำหนดเอง?
98 php  implode 

11
การสืบทอดหลายรายการใน PHP
ฉันกำลังมองหาวิธีที่ดีและสะอาดเพื่อหลีกเลี่ยงข้อเท็จจริงที่ว่า PHP5 ยังไม่รองรับการสืบทอดหลายรายการ นี่คือลำดับชั้นของคลาส: ข้อความ - TextMessage -------- InvitationTextMessage - EmailMessage -------- InvitationEmailMessage คลาส Invitation * ทั้งสองประเภทมีหลายอย่างที่เหมือนกัน ฉันชอบที่จะมีคลาสผู้ปกครองทั่วไปคำเชิญที่ทั้งคู่จะสืบทอดมา น่าเสียดายที่พวกเขามีหลายสิ่งที่เหมือนกันกับบรรพบุรุษปัจจุบันของพวกเขา ... TextMessage และ EmailMessage ความปรารถนาคลาสสิกสำหรับการสืบทอดหลายรายการที่นี่ วิธีใดที่มีน้ำหนักเบาที่สุดในการแก้ปัญหานี้ ขอบคุณ!
97 php  oop  inheritance 

2
ตัวแปร $ _SERVER ใดที่ปลอดภัย
ตัวแปรใด ๆ ที่ผู้ใช้สามารถควบคุมได้ผู้โจมตีก็สามารถควบคุมได้เช่นกันดังนั้นจึงเป็นที่มาของการโจมตี สิ่งนี้เรียกว่าตัวแปร "แปดเปื้อน" และไม่ปลอดภัย เมื่อใช้$_SERVERสามารถควบคุมตัวแปรหลายตัวได้ PHP_SELF, HTTP_USER_AGENT, HTTP_X_FORWARDED_FOR, HTTP_ACCEPT_LANGUAGEและอื่น ๆ อีกมากมายเป็นส่วนหนึ่งของส่วนหัวของการร้องขอ HTTP ที่ส่งมาจากลูกค้า มีใครรู้จัก "รายการที่ปลอดภัย" หรือรายการ$_SERVERตัวแปรที่ไม่มีการเคลือบหรือไม่
97 php  security 

2
ส่งอีเมลด้วย PHPMailer - ฝังรูปภาพในเนื้อหา
ฉันพยายามส่งเมล HTML ด้วย PHPMailer พร้อมรูปภาพ เนื้อหาถูกโหลดจากไฟล์ html ซึ่งมีข้อมูลทั้งหมด เมื่อส่งจดหมายรูปภาพจะไม่ปรากฏในเนื้อความแม้ว่าฉันจะส่งภาพเป็นไฟล์แนบด้วยก็ตาม HTML <img>แท็กชี้ไปที่เดียวกันกับสถานที่นั้น PHP: $mail->AddAttachment('img/2u_cs_mini.jpg'); ฉันจะทำให้ html ชี้ไปที่ไฟล์แนบเพื่อให้สามารถโหลดรูปภาพในร่างกายได้อย่างไร ดูตัวอย่างที่มาพร้อมกับ PHPMailer ฉันไม่สังเกตเห็นความแตกต่างใด ๆ และในกรณีนี้ภาพจะปรากฏขึ้น
97 php  html  image  email  phpmailer 

11
ฉันต้องป้องกันการแทรก SQL หรือไม่ถ้าฉันใช้ดรอปดาวน์?
ฉันเข้าใจว่าคุณไม่ควรเชื่อถือการป้อนข้อมูลของผู้ใช้จากแบบฟอร์มเนื่องจากมีโอกาสเกิดการแทรก SQL อย่างไรก็ตามสิ่งนี้ใช้กับแบบฟอร์มที่อินพุตเพียงรายการเดียวมาจากดรอปดาวน์ (ดูด้านล่าง) หรือไม่ ฉันกำลังบันทึก$_POST['size']ลงในเซสชันซึ่งจะใช้ทั่วทั้งไซต์เพื่อสืบค้นฐานข้อมูลต่างๆ (ด้วยmysqliSelect query) และการฉีด SQL ใด ๆ จะเป็นอันตรายอย่างแน่นอน (อาจลดลง) ไม่มีพื้นที่สำหรับการป้อนข้อมูลของผู้ใช้ที่พิมพ์เพื่อสืบค้นฐานข้อมูลมีเพียงดรอปดาวน์ <form action="welcome.php" method="post"> <select name="size"> <option value="All">Select Size</option> <option value="Large">Large</option> <option value="Medium">Medium</option> <option value="Small">Small</option> </select> <input type="submit"> </form>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.