搜尋
首頁後端開發php教程PHP 基礎:PHP 程式設計簡介

無可否認,我們的產業是個極為困難的產業。曾經考慮過學習第二語言嗎?嗯,五個怎麼樣?如果您想成為現代 Web 開發人員,這就是您所需要的。考慮到這一點,如果您不小心,很快您可能會發現自己不知所措,因為您盲目地盯著無數令人困惑的部落格文章或技術書籍。

與任何事情一樣,關鍵是一次邁出一步。

與任何事情一樣,關鍵是一次邁出一步。你會因為一個月沒有學會口語而責怪自己嗎?當然不是。然後將同樣程度的思維應用到您的程式設計之旅中。這些事情需要時間,但是,只要你繼續前進,你很快就會到達那裡。不要停下來!

第一步是 HTML。了解 <div> 的用途。了解如何使用語意標籤建立內容。建立一個基本的、無樣式的網頁。 <p>正如您可能已經猜到的那樣,第二步是 CSS。了解如何設定頁面上元素的樣式。了解「關注點分離」的含義,以及它如何應用於 HTML 和 CSS。完成您的第一個簡單網站。 </p> <p>第三步是開發人員開始分支到自己的專業領域。此時,您可以深入了解 JavaScript 的世界,它正在以前所未有的方式蓬勃發展。或者,您可以將精力集中在後端。 </p> <blockquote> <p>對<em>前端</em>和<em>後端</em>之間的差異感到困惑嗎?將前端視為導致泰坦尼克號沉沒的冰山一角。它是應用程式中對用戶可見且可以與之互動的部分。另一方面,後端處理從持久性到驗證到路由的所有事務。 </p> </blockquote> <p>出於本文的目的,我們假設您選擇了後一個選項;伺服器端,就是這樣! </p> <blockquote class="pullquote"> <p> 無可否認,PHP 在網路上佔據主導地位。 </p> </blockquote> <p>不幸的是,你又遇到了一些要走的路。您應該選擇最受歡迎的選項 - PHP?魯比呢?如今,酷孩子似乎更喜歡這樣。話又說回來,如果你有鬍子怎麼辦? Python 是正確的選擇嗎?但最重要的是,當你的經驗是零時,你怎麼可能做出選擇? </p> <p>在這種情況下 - 在作者看來 - 沒有錯誤的選擇。當然,沒有什麼可以阻止你改變方向。事實上,我們鼓勵所有開發人員學習多種語言!然而,現在的關鍵是只選一個,並學好它。 </p> <p>雖然 PHP 確實不是最美麗的語言,但不可否認的是它主宰網路。事實上,它是世界上最受歡迎的腳本語言。這樣做的好處是您可以放心,每個 PHP 問題都已經被提出、解決和記錄。知道這一點讓人感到安慰。儘管您正處於學習的最脆弱階段,但一個龐大、友好的社區就在您家門口,隨時準備為您提供幫助。更好的是,由於 Composer 和 Laravel 等工具,PHP 正在經歷前所未有的現代復興。 </p> <hr> <h2 id="什麼是-PHP">什麼是 PHP? </h2> <p>PHP 是 <em>PHP:超文本預處理器</em> 的縮寫(是的,開發人員喜歡他們的遞歸笑話),是一種專門為 Web 構建的腳本語言。不過,很有可能這對您來說仍然毫無意義。腳本語言?啊?什麼時候會選擇 PHP 而不是簡單的 HTML?好吧,也許可以舉個例子。假設您已成功安裝 PHP,請在桌面上的新資料夾中建立 <code>index.php 文件,並新增:

<?php

echo 'Hello world';

是的,這是無處不在的「hello world」範例,隨著您的技能進步,您會變得非常熟悉。每種語言/框架/工具都有一個!

為了執行此程式碼,請使用 PHP 的內建伺服器。切換到您最喜歡的命令列工具(終端,對於 Mac 用戶), cd 到專案資料夾,並使用 php -S localhost:8888 啟動伺服器。此命令翻譯為「運行伺服器,並使其可透過瀏覽器在本機主機、連接埠 8888 進行存取」。快來嘗試一下吧!打開Google Chrome,瀏覽到localhost:8888,你會在頁面上看到「Hello world*」!漂亮! echo 是一種語言構造,除了輸出給定值之外什麼也不做。

提示:MAMP 和 WAMP 是出色的一鍵式解決方案,可用於在 Mac 或 PC 上安裝 PHP、MySQL 和 Apache,而無需摸索命令列。它們在您學習的早期階段可能是有用的選擇。

PHP 基础知识:PHP 编程简介

##

诚然,这并不是世界上最令人兴奋的事情。事实上,您可能会想,“为什么我不能将“Hello world”直接写入 HTML 页面,从而完全不需要 PHP?”这是真的;对于这个例子来说,它没有任何作用。然而,当输出本质上是动态的时,像 PHP 这样的脚本语言就变得特别有用。如果您希望问候语引用通过 URL 的查询字符串(地址栏中问号后面的文本)传递的值,而不是 world,该怎么办?这是一个更新的示例,它就实现了这一点!

<?php

echo 'Hello, ' . $_GET['person'];

啊,这引入了一些新技术。首先,分隔 Hello 字符串和令人困惑的 $_GET 的单个句点允许您连接(或分组)值。在本例中,我们希望打印“Hello, *”,然后打印 $_GET['person'] 表示的值。这就是我们所说的超全局数组。为了简单起见,可以将其视为从 URL 的查询字符串*获取值的一种方法。

通过加载 localhost:8888/?person=Joe 来测试这一点。如果配置正确,网页现在应该显示“Hello, Joe”。通过将 Joe 替换为您自己的名称来尝试一下。请注意每次刷新页面时输出如何更新?这对于静态 HTML 来说根本不可能实现。

成熟编程的关键之一是考虑代码中每一个可能的路径。例如,如果没有 person 密钥可用怎么办?也许查询字符串被完全省略了。在这种情况下,肯定会抛出错误,因为 person 键不存在。解决办法是什么?虽然这确实只是一个简单的例子,但考虑所有可能的结果仍然很重要。让我们提供一个默认值。

<?php

if (isset($_GET['person'])) {
    $person = $_GET['person'];
} else {
    $person = 'Joe';
}

echo 'Hello, ' . $person;

尽管有更简化的方法可以实现这一点,但上面的示例是一个很好的起点。这也是您对条件语句的第一次介绍。以与处理现实生活中的场景相同的方式处理代码。例如,“如果我们没有牛奶,就去商店。否则,就呆在家里。”这种思路可以使用以下逻辑转换为 PHP:

$outOfMilk = true;

if ($outOfMilk) {
    echo 'Going out to the store.';
} else {
    echo 'Breakfast is served.'
}

在这段代码中,只会将一行文本打印到屏幕上。变量值(动态值)$outOfMilk 将确定控制流。

提示:要在 PHP 中声明变量,请在任何名称前添加美元符号。作为最佳实践,选择可读的变量名称而不是神秘的替代名称。

回到前面的例子,只要设置了 $_GET['person'] (可以将其视为“可用”的伪名),然后创建一个新的 $person 变量 equal到它的价值。否则,应用默认值。如果您返回到浏览器,它现在应该可以正常运行,无论查询字符串中是否存在 person 键。

安全

不幸的是,我们仍然没有回家。一个关键的编程最佳实践是将安全性置于每项操作的最前沿。即使有了这个令人难以置信的基本示例,我们也为网络上最普遍的安全问题之一打开了大门:XSS(跨站脚本)。对此的真正理解绝对超出了本入门课程的范围(整本书都写过它),但是,这里有一个基本说明:如果 $_GET['person'] 等于而不是字符串怎么办,但是一个脚本?

http://localhost:8888/?person=<script>alert('ATTACK!')</script>

由于该值尚未被清理,因此在执行时,在某些浏览器中会显示警告框。

基于 Webkit 的浏览器(例如 Chrome 和 Safari)现在可以提供针对此类攻击的保护。然而,情况并非总是如此,并且在 Firefox 和 Internet Explorer 中仍然如此。

PHP 基础知识:PHP 编程简介

哎呀!我们不能这样。虽然现代社会表明一个人在被证明有罪之前是无辜的,但对于编程世界来说却并非如此。所有用户输入在经过净化之前都是有罪的!这是一个更新的示例,它执行此操作:

<?php

if (isset($_GET['person'])) {
    $person = $_GET['person'];
} else {
    $person = 'Joe';
}

echo 'Hello, ' . htmlspecialchars($person, ENT_QUOTES);

通过此修改,如果有人尝试 XSS 攻击,我们将做好准备! htmlspecialchars 是一个本机 PHP 函数,可将各种符号转换为其实体对应部分。 &amp; 变为 &amp; 变为 <code> 等。这使其成为提供额外安全性的完美工具。 <code><script></script> 如果在执行前转换为 <script></script> 则没有任何意义。用户将简单地看到:

Hello, &amp;lt;script&amp;gt;alert('ATTACK!')&amp;lt;/script&amp;gt;

太棒了;没有造成任何伤害!


函数

虽然 PHP 附带了大量本机函数,但有时您肯定需要自己的函数。幸运的是,编写它们很容易。

将函数视为可重用的逻辑片段,可以将其抽象出来,以便可以使用可读的名称来识别和调用它。

也许您经营一家夜总会(如果您正在阅读本文,则不太可能!),并且需要一种简单的方法来接受一个人的出生日期,并计算他或她是否至少有 21 岁。自定义函数将是完成此任务的绝佳方法。

第一步是定义一个新函数,名为 isAdult。函数可以接受外部输入,然后可以对其进行操作。这允许函数返回的数据是动态的。在这种情况下,要确定一个人是否是成年人,我们需要知道他们的出生年份。最后一步是返回 truefalse,具体取决于当前年份减去该人的出生日期是否至少为二十一。

function isAdult($yob) {
    $currentYear = 2013;

    return $currentYear - $yob &amp;gt;= 21;
}

其实很简单!现在,我们只需要将其传递给保镖即可。可以通过引用其名称并后跟一组括号来触发或调用函数:isAdult()。但是,如果函数需要参数,那么您可以在这些括号内指定它,如下所示:

if (isAdult(1985)) {
    echo 'Come on in!';
} else {
    echo 'Please leave now, before I call your mother.';
}

这个 isAdult 函数有一个明显的问题。当前年份已被硬编码。当然,它会在整个 2013 年有效,但明年呢?看来这个值也需要是动态的。 PHP提供了一个date函数,可以用来计算当前年份。因此,该功能可能会更新为:

function isAdult($yob) {
    $currentYear = date('Y');

    return $currentYear - $yob &amp;gt;= 21;
}

数组

几个月过去了,现在夜总会的生意比以往任何时候都好。事实上,它做得太好了,以至于保镖无法跟上。如果他可以一次筛选一组人,他的工作可能会更容易。

将数组视为相关数据的容器。您甚至可以将其称为列表:推文列表、一组家庭成员、一组出生日期。

最新版本的 PHP (5.4) 中的数组可以使用括号内的逗号分隔列表来定义,如下所示:

$group = [1985, 1990, 1992, 1997];

这个单个 $group 变量现在包含多个出生日期。可以通过指定索引来访问其中的值,例如 $group[0]。数组就是我们所说的从零开始的数组。在翻译中,这意味着数组中的第一项或键的索引为零。因此,要访问 1992 年的值,您可以引用 $group[2]

现在,保镖可以快速过滤这些出生日期,并计算是否允许该人进入或拒绝他们。 foreach 语句可用于此类过滤。

$group = [1985, 1990, 1992, 1997];
foreach($group as $yob) {
    if (isAdult($yob)) {
        echo 'Come on in!';
    } else {
        echo 'Please leave now, before I call your mother.';
    }
}

注意保镖如何声明 group 中的出生年份 foreach 人应包含在变量 $yob 中。接下来,正如他之前所做的那样,他将该值传递给 isAdult 函数,并相应地继续。

不过,当保镖无法确定此人的出生年份和姓名之间的联系时,他可能会感到困惑。 PHP 还允许关联数组,它提供了将给定值与键关联起来所需的功能。这是一个例子:

$group = [
    'John'  =&amp;gt; 1985,
    'Susan' =&amp;gt; 1990,
    'Joe'   =&amp;gt; 1992,
    'Sara'  =&amp;gt; 1997
];

这样更好。作为额外的好处,保镖现在知道了这个人的名字,可以对这个人更加友好一点。

$group = [
    'John'  =&amp;gt; 1985,
    'Susan' =&amp;gt; 1990,
    'Joe'   =&amp;gt; 1992,
    'Sara'  =&amp;gt; 1997
];

foreach($group as $name => $yob) {
    if (isAdult($yob)) {
        echo "Come on in, $name!";
    } else {
        echo "Please leave now, $name, before I call your mother.";
    }
}

在双引号内存储字符串时,您可以嵌套变量而不是使用连接。这可以提供更具可读性的语法。


课程

面向对象的编程远远超出了本教程的范围,但是,类仍然值得一提。现在,将它们视为相关属性和方法的简单容器。例如,代表单个人的类可能如下所示:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age)
    {
        $this-&amp;gt;name = $name;
        $this-&amp;gt;age = $age;
    }
}

注意到 __construct() 方法了吗?这被称为魔术方法,实例化后会立即触发。当此方法触发时,它将接受名称和年龄,然后将其附加到对象。

要使用此类,请尝试:

$me = new Person('Jeffrey', 28);

这将创建 Person 类的新实例。该实例存储在 $me 变量中,可以称为对象。现在,没有什么可以阻止您创建此类的多个实例 - 事实上,在现实世界的项目中,您会这样做!该类只是一个蓝图。

但此时,该类还没有太大用处。让我们添加一个方法或函数来指定一个人的配偶。

class Person {
    public $name;
    public $age;
    public $spouse;

    public function __construct($name, $age)
    {
        $this-&amp;gt;name = $name;
        $this-&amp;gt;age = $age;
    }

    public function marry(Person $spouse)
    {
        $this-&amp;gt;spouse = $spouse;
    }
}

$me = new Person('Jeff', 28);
$her = new Person('Allison', 28);
$me-&amp;gt;marry($her);

此修改后的代码现在包含一个 marry() 方法,该方法将更新对象上的 $spouse 属性。现在,两个人之间有了直接联系。

如果方法参数前面有一个类名(Person $spouse),称为类型提示,则表明该参数必须是给定类的实例,否则将引发错误。 p>

要获取我配偶的名字,您可以这样写:

echo $me-&amp;gt;spouse-&amp;gt;name; // Allison

面向对象编程的概念比这更深入,但现在保持简单。它有助于将类视为单数名词:推文、用户、客户或文件。

对这种模式的真正欣赏只会随着时间的推移而出现。

动手实践

测试您新发现的技能。您如何在页面上为用户注册和显示推文?好吧,第一步可能是定义一个代表单个 Tweet 的类。此类应存储推文正文的属性及其发布日期。此外,还应确保推文正文不超过 140 个字符。这是此类课程的第一次尝试:

class Tweet {
    public $body;
    public $pubDate;

    public function __construct($body)
    {
        $this-&amp;gt;setBody($body);
        $this-&amp;gt;setPubDate(new DateTime);
    }

    public function setBody($body)
    {
        if (strlen($body) &amp;gt; 140) {
            throw new InvalidArgumentException;
        }

        $this-&amp;gt;body = $body;
    }

    public function setPubDate(DateTime $date)
    {
        $this-&amp;gt;pubDate = $date-&amp;gt;format('Y/m/d H:i:s');
    }
}

虽然一开始看起来可能令人不知所措,但请稍微研究一下这段代码,并尝试了解每一步发生的情况。您可能会发现它非常可读!

一个有趣的新功能源于 setBody 方法。如果提供的文本超过 140 个字符(我们可以使用 PHP 的 strlen 函数计算),那么我们应该对此表示反对,因为它违反了推文的规则。可以使用语法 throw new ExceptionType 抛出异常。

现在我们有了一个足够合适的推文容器,我们可以创建几条推文,将它们存储在一个数组中,然后最终使用 foreach 语句将它们呈现在页面上。

$tweets = [];

# add two new tweets to the array
$tweets[] = new Tweet('Going to the store.');
$tweets[] = new Tweet('Back from the store!');

# Filter through, and display on page.
foreach($tweets as $tweet) {
    echo &amp;quot;&amp;lt;h2 id=&amp;quot;tweet-body&amp;quot;&amp;gt;{$tweet-&amp;gt;body}&amp;lt;/h2&amp;gt;&amp;quot;;
    echo &amp;quot;&amp;lt;p&amp;gt;Posted on: {$tweet-&amp;gt;pubDate}&amp;lt;/p&amp;gt;&amp;quot;;
}

在浏览器中查看输出后,您应该看到类似以下内容的内容:

PHP 基础知识:PHP 编程简介

很好,但是我们如何保存这些推文?


存储

到目前为止,您已经学习了基础知识:变量、条件、函数、数组、类。还有更多内容需要介绍,但您应该根据需要自行研究。学习的下一步就是坚持。例如,您如何保留所有推文的日志?不记住推文的推文服务是一个糟糕的服务!这就是数据库的想法发挥作用的时候。

将数据库表视为 Excel 电子表格。它可以包含任意数量的字段,例如人员的姓名、年龄或邮寄地址。然而,PHP 本身并不提供这种存储。相反,最常见的选择是 MySQL,它是世界上最流行的开源数据库。

安装 MySQL 不属于本教程的范围。相反,请参阅 Nettuts+ 上的本教程以获取完整的演练。

下面是一个简化的示例,可帮助您开始从数据库表中安全地获取行。如果它看起来势不可挡,请不要担心。 MySQL 是您要学习的第二门新语言。 PHP 的 PDO API 以及查询语言本身需要时间学习。

首先,您需要一种连接数据库的方法。

function connect() {
    $conn = new PDO(
        'mysql:host=localhost;dbname=DB_NAME',
        'USERNAME',
        'PASSWORD'
    );

    $conn-&amp;gt;setAttribute(
        PDO::ATTR_ERRMODE,
        PDO::ERRMODE_EXCEPTION
    );

    return $conn;
}

PDO 是 PHP 用于连接 MySQL 数据库的三个可用 API 之一。

接下来,我们将添加一个辅助函数来从 tweets 表中获取所有记录。请密切注意 query 方法的参数 SELECT * FROM tweets。这是一种用于查询数据库的特殊语言。在本例中,我们使用 * 符号来引用所有行。因此,我们从表中选择所有行,名为 tweets

此函数准备查询,然后获取完整的结果集。

function fetchTweets($conn) {
    $stmt = $conn-&amp;gt;query('SELECT * FROM tweets');

    return $stmt-&amp;gt;fetchAll(PDO::FETCH_OBJ);
}

现在,阶段设置完毕,我们只需要相应地调用函数即可。

# Connect to the DB
$conn = connect();

# Fetch all rows from attendees table
var_dump(fetchTweets($conn));

转储变量内容的一个简单方法是使用 var_dump 函数。如果将 fetchTweets($conn) 的输出传递给此函数,在浏览器中查看它时,您将看到类似以下内容的内容:

PHP 基础知识:PHP 编程简介

var_dump 对于调试很有帮助,但出于生产目的,最好过滤结果,并将它们正确呈现在页面上。您已经熟悉的 foreach 语句将很好地处理这项工作!

$tweets = fetchTweets($conn);

foreach($tweets as $tweet) {
    echo &amp;quot;&amp;lt;h2 id=&amp;quot;tweet-body&amp;quot;&amp;gt;{$tweet-&amp;gt;body}&amp;lt;/h2&amp;gt;&amp;quot;;
    echo &amp;quot;&amp;lt;p&amp;gt;{$tweet-&amp;gt;pubDate}&amp;lt;/p&amp;gt;&amp;quot;;
}

结论

与任何技能一样,编写流利的 PHP 只需要您的时间。可能需要数百个小时才能完全理解,但这没关系。这很有趣,对吧?应该是这样!

最好的学习方法就是实践。构建废弃的项目,就像它们已经过时一样!本教程中概述的技术将带您完成第一阶段,但是,随着您技能的进步,您肯定会继续学习更高级的主题,例如 PHP 框架、设计模式和测试驱动开发。玩得开心!

建议的 Tuts+ 优质资源

  • 现代 PHP 开发人员
  • PHP 基础知识
  • SQL 要点

以上是PHP 基礎:PHP 程式設計簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

解釋PHP 8.1中的纖維以進行並發。解釋PHP 8.1中的纖維以進行並發。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區:資源,支持和發展PHP社區:資源,支持和發展Apr 12, 2025 am 12:04 AM

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能