Rumah php教程 php手册 如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

Jun 06, 2016 am 09:51 AM
ar ios mysql php pelayan web kod Sumber terbuka Mudah pengaturcaraan bahasa pengaturcaraan pembangunan perisian

原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app

  作为一个iPhone/iPad开发者,能够自己写一个简单的web服务器将是很有用的。

  例如,你可能希望在软件启动时显示一些来自服务器的更新,或者在服务器端保存一些用户数据。除了你的想象力,没有什么能限制你了。

  在第一篇中,我们将会一步一步的建立一个web服务器,基于promo code system(促销码系统),我在我的第一个软件中使用的,Wild Fables.在第二篇中,我们将会写一个iOS App来和它进行交互。

为了完成这个教程,你将需要一个web服务器,并装有MySQL和PHP。如果你没有,那么你有以下几种选择:

  • 如果你想在你的Mac(free)上运行Apache/MySQL/PHP,有很多教程可以帮你。这里有一个教程。
  • 如果你想租一个服务器(需要花钱),这里有一个教程。
  • 或者你很懒,以上两种你都不想做,那么你可以使用我在本教程PART2做的服务器。

你不需要有PHP和MySQL的经验(当然有更好)因为这个教程包含了所有你需要的代码。

 

你将做什么

也许你已经知道了,如果为你的App添加了内购功能,苹果并没有提供内置的系统来提供内购的促销码。

然而,建立你自己的内购促销码将会很有用。

如果你不需要建立这个特殊的系统也没关系,你会学到怎么建立web服务器并与App交互。

建立数据库:

第一步时建立一个数据库表。这个教程你需要3个表:

  • rw_app:保存需要使用促销码系统的软件列表。这样,你就可以为不同的App使用相同的表


    id
: app的唯一标示.

    app_id:  app 的唯一字符串标示.

  • w_promo_code:保存可用促销码的表
    •   id:唯一表示.
    •   rw_app_id: 对应的App.
    •   code: 用户输入的促销码字符.
    •   unlock_code: 返回给App的促销码字符.
    •   uses_remaining:促销码剩余可使用次数.
  • rw_promo_code_redeemed:保存促销码兑取后的信息。为了防止一个设备用一个促销码兑取多次。
    • id: 唯一标示.
    • rw_promo_code_id: 已经兑取的促销码ID (from rw_promo_code).
    • device_id: 已经兑取的设备ID.
    • redeemed_time: 兑取的时间.

这是建表的SQL代码:

DROP TABLE <span style="color: #0000ff;">IF</span><span style="color: #000000;"> EXISTS rw_promo_code;
DROP TABLE </span><span style="color: #0000ff;">IF</span><span style="color: #000000;"> EXISTS rw_app;
DROP TABLE </span><span style="color: #0000ff;">IF</span><span style="color: #000000;"> EXISTS rw_promo_code_redeemed;

CREATE TABLE rw_promo_code (
    id mediumint NOT </span><span style="color: #0000ff;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #008080;">KEY</span>,<span style="color: #000000;">    
    rw_app_id tinyint NOT </span><span style="color: #0000ff;">NULL</span>,<span style="color: #000000;"> 
    code varchar(</span>255) NOT <span style="color: #0000ff;">NULL</span>,<span style="color: #000000;">
    unlock_code varchar(</span>255) NOT <span style="color: #0000ff;">NULL</span>,<span style="color: #000000;">
    uses_remaining smallint NOT </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">
);

CREATE TABLE rw_app (
    id mediumint NOT </span><span style="color: #0000ff;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #008080;">KEY</span>,<span style="color: #000000;">    
    app_id varchar(</span>255) NOT <span style="color: #0000ff;">NULL</span><span style="color: #000000;">
);

CREATE TABLE rw_promo_code_redeemed (
    id mediumint NOT </span><span style="color: #0000ff;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #008080;">KEY</span>,<span style="color: #000000;">    
    rw_promo_code_id mediumint NOT </span><span style="color: #0000ff;">NULL</span>,<span style="color: #000000;">
    device_id varchar(</span>255) NOT <span style="color: #0000ff;">NULL</span>,<span style="color: #000000;">
    redeemed_time TIMESTAMP </span><span style="color: #0000ff;">DEFAULT</span><span style="color: #000000;"> CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);</span>
Salin selepas log masuk

在你的web服务器上,你需要建立一个MySQL数据库并建立这三张表。这里是完成的命令:

保存上面的代码到一个名为create.sql的文件,然后:

rwenderlich@kermit:~$ <span style="color: #008080;">mysql</span> -u root -<span style="color: #000000;">p
Enter password</span>:<span style="color: #000000;"> 
Welcome to the </span><span style="color: #008080;">MySQL</span> monitor.  Commands <span style="color: #008080;">end</span> with ; or \g.<span style="color: #000000;">
Your </span><span style="color: #008080;">MySQL</span> connection id is 1286<span style="color: #000000;">
Server version</span>: 5.1.37-1ubuntu5.1-<span style="color: #008080;">log</span><span style="color: #000000;"> (Ubuntu)

Type </span>'help;' or '\h' <span style="color: #0000ff;">for</span> help. Type '\c' to clear the <span style="color: #008080;">current</span> input statement.

<span style="color: #008080;">mysql</span>><span style="color: #000000;"> create database promos;
Query OK</span>, 1 row affected (0.00<span style="color: #000000;"> sec)

</span><span style="color: #008080;">mysql</span>> <span style="color: #0000ff;">use</span><span style="color: #000000;"> promos;
Database changed
</span><span style="color: #008080;">mysql</span>> grant all privileges on promos.* to 'username'@'localhost' identified by 'password'<span style="color: #000000;">;
Query OK</span>, 0 rows affected (0.00<span style="color: #000000;"> sec)

</span><span style="color: #008080;">mysql</span>> <span style="color: #0000ff;">exit</span><span style="color: #000000;">
Bye

rwenderlich@kermit</span>:~$ <span style="color: #008080;">mysql</span> -u username -p promos sql
Enter password:<span style="color: #000000;"> 
rwenderlich@kermit</span>:~$ <span style="color: #008080;">mysql</span> -u root -<span style="color: #000000;">p
Enter password</span>:<span style="color: #000000;"> 
Welcome to the </span><span style="color: #008080;">MySQL</span> monitor.  Commands <span style="color: #008080;">end</span> with ; or \g.<span style="color: #000000;">
Your </span><span style="color: #008080;">MySQL</span> connection id is 1417<span style="color: #000000;">
Server version</span>: 5.1.37-1ubuntu5.1-<span style="color: #008080;">log</span><span style="color: #000000;"> (Ubuntu)

Type </span>'help;' or '\h' <span style="color: #0000ff;">for</span> help. Type '\c' to clear the <span style="color: #008080;">current</span> input statement.

<span style="color: #008080;">mysql</span>> <span style="color: #0000ff;">use</span><span style="color: #000000;"> promos;
Database changed
</span><span style="color: #008080;">mysql</span>><span style="color: #000000;"> show tables ;
</span>+------------------------+
| Tables_in_promos       |
+------------------------+
| rw_app                 | 
| rw_promo_code          | 
| rw_promo_code_redeemed | 
+------------------------+
3 rows in set (0.00 sec)
Salin selepas log masuk

现在已有了三张空表。下一步,建立一个测试的app:

INSERT INTO rw_app VALUES(1, 'com.razeware.test'<span style="color: #000000;">);
INSERT INTO rw_promo_code VALUES(</span>1, 1, 'test', 'com.razeware.test.unlock.cake', 10000);
Salin selepas log masuk

好的。现在数据库已经连接,可以写PHP服务器了。

验证PHP/MySQL

在开始实现PHP服务器之前,首先检查PHP是否在你的服务器上运行正常。在你的服务器上建立一个叫promos的文件夹,在里面建立一个叫index.php的文件:

<span style="color: #000000;">php
 
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> RedeemAPI {
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Main method to redeem a code</span>
    <span style="color: #0000ff;">function</span><span style="color: #000000;"> redeem() {
        </span><span style="color: #0000ff;">echo</span> "Hello, PHP!"<span style="color: #000000;">;
    }
}
 
</span><span style="color: #008000;">//</span><span style="color: #008000;"> This is the first thing that gets called when this page is loaded
// Creates a new instance of the RedeemAPI class and calls the redeem method</span>
<span style="color: #800080;">$api</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> RedeemAPI;
</span><span style="color: #800080;">$api</span>-><span style="color: #000000;">redeem();
 
</span>?>
Salin selepas log masuk

你可以用你的服务器的URL测试,也可以像下面这样在命令行测试:

Ray-Wenderlichs-Mac-mini-2:~ rwenderlich$ curl http:<span style="color: #008000;">//</span><span style="color: #008000;">www.wildfables.com/promos/</span>
Hello, PHP!
Salin selepas log masuk

下一步,扩展这个类,确保你的服务器可以连接到数据库:

<span style="color: #0000ff;">class</span><span style="color: #000000;"> RedeemAPI {
    </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$db</span><span style="color: #000000;">;
 
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Constructor - open DB connection</span>
    <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct() {
        </span><span style="color: #800080;">$this</span>->db = <span style="color: #0000ff;">new</span> mysqli('localhost', 'username', 'password', 'promos'<span style="color: #000000;">);
        </span><span style="color: #800080;">$this</span>->db->autocommit(<span style="color: #0000ff;">FALSE</span><span style="color: #000000;">);
    }
 
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Destructor - close DB connection</span>
    <span style="color: #0000ff;">function</span><span style="color: #000000;"> __destruct() {
        </span><span style="color: #800080;">$this</span>->db-><span style="color: #000000;">close();
    }
 
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Main method to redeem a code</span>
    <span style="color: #0000ff;">function</span><span style="color: #000000;"> redeem() {
        </span><span style="color: #008000;">//</span><span style="color: #008000;"> Print all codes in database</span>
        <span style="color: #800080;">$stmt</span> = <span style="color: #800080;">$this</span>->db->prepare('SELECT id, code, unlock_code, uses_remaining FROM rw_promo_code'<span style="color: #000000;">);
        </span><span style="color: #800080;">$stmt</span>-><span style="color: #000000;">execute();
        </span><span style="color: #800080;">$stmt</span>->bind_result(<span style="color: #800080;">$id</span>, <span style="color: #800080;">$code</span>, <span style="color: #800080;">$unlock_code</span>, <span style="color: #800080;">$uses_remaining</span><span style="color: #000000;">);
        </span><span style="color: #0000ff;">while</span> (<span style="color: #800080;">$stmt</span>-><span style="color: #000000;">fetch()) {
            </span><span style="color: #0000ff;">echo</span> "<span style="color: #800080;">$code</span> has <span style="color: #800080;">$uses_remaining</span> uses remaining!"<span style="color: #000000;">;
        }
        </span><span style="color: #800080;">$stmt</span>-><span style="color: #000000;">close();
    }
}</span>
Salin selepas log masuk

这里添加了一个构造函数来连接给定用户名和密码的数据库,一个 析构函数来关闭数据库。现在你可以测试一下了:

Ray-Wenderlichs-Mac-mini-2:~ rwenderlich$ curl http:<span style="color: #008000;">//</span><span style="color: #008000;">www.wildfables.com/promos/</span>
test has 10000 uses remaining!
Salin selepas log masuk

服务器策略:GET还是POST:

 好的,现在是时候来实现完成的功能了。但首先,让我们来谈谈web服务器的策略。

我们知道我们需要向服务器发送一些数据,包括app的ID,兑换吗,要兑换的设备ID。

如何发送呢?有两种方法:GET(普通方法)和POST(用于发送表单)

  • 如果你选择GET,那么参数是URL的一部分,就是把参数发到URL里,然后向服务器发送请求。
  • 如果你选择POST,参数被放到request body中

每个都能满足你的需求,但是当你要尝试做些什么的时候,比如兑换促销码,还是用POST比较好。这也是我将要做的。

这是什么意思呢?如果我们想在PHP中访问这些参数,我们可以通过内建的$_POST 数组:

<span style="color: #800080;">$_POST</span>["rw_app_id"]
Salin selepas log masuk

我们将会用ASIHTTPRequest来连接服务器,用ASIFormDataRequest类发送一个POST请求:

ASIFormDataRequest *request =<span style="color: #000000;"> [ASIFormDataRequest requestWithURL:url];
[request setPostValue:</span><span style="color: #800000;">@"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span> forKey:<span style="color: #800000;">@"</span><span style="color: #800000;">rw_app_id</span><span style="color: #800000;">"</span>];
Salin selepas log masuk

更多GET和POST的信息,请看Wikipedia entry。

更新:请看@smpdawg’s的精彩评论forum topic

 

web服务器策略:算法 

下一步,我们要看看将要使用的web服务器的算法:

  1. 确保需要的参数是通过POST发送的。
  2. 确保数据库里有兑换码。
  3. 确保兑换码剩余可使用次数。
  4. 确保设备没有使用过兑换码。
  5. 到这一步,就要完成了
  • 添加一个rw_promo_code_redeemed的入口来记录兑换
  • 将在rw_promo_code的uses_remaining减去一
  • 返回unlock_code给App。

web服务器的实现

 首先,添加一个辅助方法用于返回HTTP状态信息:

<span style="color: #008000;">//</span><span style="color: #008000;"> Helper method to get a string description for an HTTP status code
// From http://www.gen-x-design.com/archives/create-a-rest-api-with-php/ </span>
<span style="color: #0000ff;">function</span> getStatusCodeMessage(<span style="color: #800080;">$status</span><span style="color: #000000;">)
{
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> these could be stored in a .ini file and loaded
    // via parse_ini_file()... however, this will suffice
    // for an example</span>
    <span style="color: #800080;">$codes</span> = <span style="color: #0000ff;">Array</span><span style="color: #000000;">(
        </span>100 => 'Continue',
        101 => 'Switching Protocols',
        200 => 'OK',
        201 => 'Created',
        202 => 'Accepted',
        203 => 'Non-Authoritative Information',
        204 => 'No Content',
        205 => 'Reset Content',
        206 => 'Partial Content',
        300 => 'Multiple Choices',
        301 => 'Moved Permanently',
        302 => 'Found',
        303 => 'See Other',
        304 => 'Not Modified',
        305 => 'Use Proxy',
        306 => '(Unused)',
        307 => 'Temporary Redirect',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        402 => 'Payment Required',
        403 => 'Forbidden',
        404 => 'Not Found',
        405 => 'Method Not Allowed',
        406 => 'Not Acceptable',
        407 => 'Proxy Authentication Required',
        408 => 'Request Timeout',
        409 => 'Conflict',
        410 => 'Gone',
        411 => 'Length Required',
        412 => 'Precondition Failed',
        413 => 'Request Entity Too Large',
        414 => 'Request-URI Too Long',
        415 => 'Unsupported Media Type',
        416 => 'Requested Range Not Satisfiable',
        417 => 'Expectation Failed',
        500 => 'Internal Server Error',
        501 => 'Not Implemented',
        502 => 'Bad Gateway',
        503 => 'Service Unavailable',
        504 => 'Gateway Timeout',
        505 => 'HTTP Version Not Supported'<span style="color: #000000;">
    );
 
    </span><span style="color: #0000ff;">return</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$codes</span>[<span style="color: #800080;">$status</span>])) ? <span style="color: #800080;">$codes</span>[<span style="color: #800080;">$status</span>] : ''<span style="color: #000000;">;
}
 
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Helper method to send a HTTP response code/message</span>
<span style="color: #0000ff;">function</span> sendResponse(<span style="color: #800080;">$status</span> = 200, <span style="color: #800080;">$body</span> = '', <span style="color: #800080;">$content_type</span> = 'text/html'<span style="color: #000000;">)
{
    </span><span style="color: #800080;">$status_header</span> = 'HTTP/1.1 ' . <span style="color: #800080;">$status</span> . ' ' . getStatusCodeMessage(<span style="color: #800080;">$status</span><span style="color: #000000;">);
    </span><span style="color: #008080;">header</span>(<span style="color: #800080;">$status_header</span><span style="color: #000000;">);
    </span><span style="color: #008080;">header</span>('Content-type: ' . <span style="color: #800080;">$content_type</span><span style="color: #000000;">);
    </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$body</span><span style="color: #000000;">;
}</span>
Salin selepas log masuk

如果你不理解为什么我们不要这个,那是因为这是一个遵守HTTP协议的web服务器,当你发送一个相应你可以制定一个包含错误码和详细描述的头。有标准错误码可以用,这些方法不过是用起来更方便。

正如你看到的,我防线了一个可以把状态吗转换成HTML信息的教程。

下一步,就是真正的实现了!

function redeem() {
 
    // Check for required parameters
    if (isset(<span style="color: #800080;">$_POST</span>["rw_app_id"]) && isset($_POST["code"]) && isset($_POST["device_id"])) {
 
        // Put parameters into local variables
        $rw_app_id = $_POST["rw_app_id"];
        $code = $_POST["code"];
        $device_id = $_POST["device_id"];
 
        // Look up code in database
        $user_id = 0;
        $stmt = $this->db->prepare('SELECT id, unlock_code, uses_remaining FROM rw_promo_code WHERE rw_app_id=? AND code=?');
        $stmt->bind_param("is", $rw_app_id, $code);
        $stmt->execute();
        $stmt->bind_result($id, $unlock_code, $uses_remaining);
        while ($stmt->fetch()) {
            break;
        }
        $stmt->close();
 
        // Bail if code doesn't exist
        if ($id ) {
            sendResponse(400, 'Invalid code');
            return false;
        }
 
        // Bail if code already used        
        if ($uses_remaining ) {
            sendResponse(403, 'Code already used');
            return false;
        }    
 
        // Check to see if this device already redeemed    
        $stmt = $this->db->prepare('SELECT id FROM rw_promo_code_redeemed WHERE device_id=? AND rw_promo_code_id=?');
        $stmt->bind_param("si", $device_id, $id);
        $stmt->execute();
        $stmt->bind_result($redeemed_id);
        while ($stmt->fetch()) {
            break;
        }
        $stmt->close();
 
        // Bail if code already redeemed
        if ($redeemed_id > 0) {
            sendResponse(403, 'Code already used');
            return false;
        }
 
        // Add tracking of redemption
        $stmt = $this->db->prepare("INSERT INTO rw_promo_code_redeemed (rw_promo_code_id, device_id) VALUES (?, ?)");
        $stmt->bind_param("is", $id, $device_id);
        $stmt->execute();
        $stmt->close();
 
        // Decrement use of code
        $this->db->query("UPDATE rw_promo_code SET uses_remaining=uses_remaining-1 WHERE id=$id");
        $this->db->commit();
 
        // Return unlock code, encoded with JSON
        $result = array(
            "unlock_code" => $unlock_code,
        );
        sendResponse(200, json_encode($result));
        return true;
    }
    sendResponse(400, 'Invalid request');
    return false;
 
}
Salin selepas log masuk

你应该能够读懂这段代码,否则的话查看以下这个教程Mysqli reference。这里有一些事情我需要指出:

  • isset是一个用于检测变量是否已经设置了的PHP函数。我们这里用它来确保所有需要的POST参数都发送了。
  • 注意我们没有自己把传进来的变量放到SQL语句中,而是使用bind_param方法。这是更安全的方法,否则你可能使自己易受SQL injection的攻击。
  • 注意 unlock_code 用JSON返回。我们当然可以直接用字符串返回因为我们只返回一个信息,但是用JSON便于以后扩展。

现在,你的web服务器就已经可以工作了。你可以用下面命令来测试:

curl -F "rw_app_id=1" -F "code=test" -F "device_id=test" http:<span style="color: #008000;">//</span><span style="color: #008000;">www.wildfables.com/promos/</span>
{"unlock_code":"com.razeware.wildfables.unlock.test"}
Salin selepas log masuk

注意,如果你在我的服务器上测试,如果你得到“code already used”的错误,你应该更改你的device_id。

你可能希望进入你的数据库看看那里是否有一个rw_promo_code_redeemed的入口,uses_remaining是否减一等等。

下一步?

这里是源码source code。

敬请期待PART2. 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Dec 09, 2024 am 11:42 AM

Salah satu perubahan utama yang diperkenalkan dalam MySQL 8.4 (keluaran LTS terkini pada 2024) ialah pemalam &quot;Kata Laluan Asli MySQL&quot; tidak lagi didayakan secara lalai. Selanjutnya, MySQL 9.0 mengalih keluar pemalam ini sepenuhnya. Perubahan ini mempengaruhi PHP dan apl lain

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Kunci Pengekodan: Membuka Kunci Kuasa Python untuk Pemula Kunci Pengekodan: Membuka Kunci Kuasa Python untuk Pemula Oct 11, 2024 pm 12:17 PM

Python ialah bahasa pengenalan pengaturcaraan yang ideal untuk pemula melalui kemudahan pembelajaran dan ciri yang berkuasa. Asasnya termasuk: Pembolehubah: digunakan untuk menyimpan data (nombor, rentetan, senarai, dll.). Jenis data: Mentakrifkan jenis data dalam pembolehubah (integer, titik terapung, dll.). Operator: digunakan untuk operasi matematik dan perbandingan. Aliran kawalan: Kawal aliran pelaksanaan kod (penyataan bersyarat, gelung).

Java Made Simple: Panduan Pemula untuk Kuasa Pengaturcaraan Java Made Simple: Panduan Pemula untuk Kuasa Pengaturcaraan Oct 11, 2024 pm 06:30 PM

Java Made Simple: Panduan Permulaan untuk Kuasa Pengaturcaraan Pengenalan Java ialah bahasa pengaturcaraan berkuasa yang digunakan dalam segala-galanya daripada aplikasi mudah alih hingga sistem peringkat perusahaan. Untuk pemula, sintaks Java adalah ringkas dan mudah difahami, menjadikannya pilihan ideal untuk pembelajaran pengaturcaraan. Sintaks Asas Java menggunakan paradigma pengaturcaraan berorientasikan objek berasaskan kelas. Kelas ialah templat yang menyusun data dan tingkah laku yang berkaitan bersama-sama. Berikut ialah contoh kelas Java yang mudah: publicclassPerson{privateStringname;privateintage;

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Oct 13, 2024 pm 01:32 PM

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.

See all articles