• <thead id="gnnqv"></thead>

      \n

      Laravel Socialite Testing Example<\/h1>\n @if (auth()->check())\n

      User is authenticated.<\/p>\n

      Name: {{ auth()->user()->name }}<\/p>\n

      Email: {{ auth()->user()->email }}<\/p>\n

      Logout<\/a><\/p>\n @else\n

      User is not authenticated.<\/p>\n

      \n Login with Google<\/a>\n <\/p>\n @endif\n<\/body>\n<\/html>\n<\/pre>\n\n\n\n

      Ersetzen Sie den Inhalt der neu erstellten Datei ?tests\/Feature\/AuthRoutesTest.php“ durch Folgendes.
      \n<\/p>\n\n

      php artisan serve\n<\/pre>\n\n\n\n

      \n \n \n So funktionieren die Tests\n<\/h2>\n\n

      Beim Testen der Weiterleitungsroute testen wir, ob Socialite zur richtigen URL weiterleitet und die richtigen URL-Parameter übergibt.<\/p>\n

      Beim Testen der Rückrufrouten machen wir uns über Socialite lustig. Mocking ist nicht meine Lieblingsoption: In einer idealen Welt k?nnten wir Socialite durch eine andere OAuth2-Implementierung ersetzen und unsere Tests würden immer noch funktionieren. Allerdings gibt es keine einfache M?glichkeit, sich in die Autorisierungsanfrage einzuklinken, die Socialite sendet, um das Zugriffstoken zu pf?nden. Aus diesem Grund ist Spott der praktischste Ansatz, um Socialite zu testen.<\/p>\n\n

      Es ist mühsam, Fluent-APIs über Mockery zu verspotten: Sie müssen mit dem Endaufruf beginnen und sich rückw?rts vorarbeiten.<\/p>\n\n

      Hier ist die Socialite-Methode, die unser Callback-Endpunkt aufruft.
      \n<\/p>\n\n

      laravel new socialite-tests\n<\/pre>\n\n\n\n

      So muss das durch Mockery verspottet werden:
      \n<\/p>\n\n

       ┌ Would you like to install a starter kit? ────────────────────┐\n │ No starter kit                                               │\n └──────────────────────────────────────────────────────────────┘\n\n ┌ Which testing framework do you prefer? ──────────────────────┐\n │ Pest                                                         │\n └──────────────────────────────────────────────────────────────┘\n\n ┌ Which database will your application use? ───────────────────┐\n │ SQLite                                                       │\n └──────────────────────────────────────────────────────────────┘\n\n ┌ Would you like to run the default database migrations? ──────┐\n │ Yes                                                          │\n └──────────────────────────────────────────────────────────────┘\n<\/pre>\n\n\n\n

      Abschlie?end führen wir einen Test durch, um sicherzustellen, dass die direkte Navigation zur Rückruf-URL au?erhalb des OAuth-Ablaufs einen 400-Statuscode zurückgibt. Wir haben den Aufruf von Socialite::driver('google')->user() im Callback-Endpunkt innerhalb eines try\/catch-Blocks verpackt. Wenn wir den Socialite-Aufruf nicht in einen Try\/Catch-Block eingeschlossen h?tten und jemand die Rückruf-URL in seinen Browser eingegeben h?tte, würde der Endpunkt eine Ausnahme mit einem HTTP-500-Statuscode ausl?sen. Wenn in Ihrem Team die überwachung von 500 Statuscodes eingerichtet ist, kann dies dazu führen, dass jemand mitten in der Nacht angerufen wird.<\/p>\n\n

      \n \n \n Einpacken\n<\/h2>\n\n

      Dies ist eine minimale Integration und es k?nnte noch viel mehr implementiert werden. Wenn wir eine Integration mit einem sozialen Anbieter implementieren würden, bei dem sich die E-Mail-Adresse des Benutzers ?ndern k?nnte, würde diese Implementierung nicht funktionieren, da sie mit der E-Mail-Adresse abgeglichen wird. Wenn der Benutzer seine E-Mail-Adresse innerhalb unserer App ?ndern k?nnte, würde diese Implementierung aus demselben Grund auch nicht funktionieren. Nachdem Sie nun jedoch gesehen haben, wie man Socialite testet, k?nnen Sie Tests für diese Szenarien schreiben und die zugrunde liegende Implementierung so ?ndern, dass sie erfolgreich sind.<\/p>\n\n

      Ich habe viele Blogartikel und Forenbeitr?ge über Socialite gelesen, bevor ich verstanden habe, wie ich meine eigene Implementierung aufbaue, wie ich sie teste und worüber ich nachdenken sollte. Einige davon m?chte ich hier würdigen.<\/p>\n\n

        \n
      • Wie ich Integrationstests für von Laravel Socialite betriebene Apps schreibe von Stefan Zweifel<\/li>\n
      • ServerSideUp-Forum: Socialite Best Practices, ein Gespr?ch<\/li>\n
      • Stack Overflow: So testen Sie Laravel Socialite<\/li>\n
      • Stack Exchange: Soziale Anmeldungen mit einer passenden E-Mail verknüpfen oder nicht verknüpfen<\/li>\n
      • Stapelaustausch: Umgang mit verbundenen sozialen Konten und potenziellen Waisenkindern<\/li>\n<\/ul>\n\n

        Lesen Sie diese, wenn Sie tiefer in die Materie eintauchen m?chten. Lassen Sie mich auch wissen, ob Sie an Teil 2 dieses Beitrags interessiert sind, in dem ich mich mit der Handhabung mehrerer sozialer Anbieter, der Handhabung, wenn ein Benutzer seine E-Mail-Adresse ?ndert, oder der Handhabung von Aktualisierungstokens befasse.<\/p>\n\n\n \n\n \n "}

        亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

        Heim Backend-Entwicklung PHP-Tutorial Implementierung und Test der Socialite-Authentifizierung in Laravel

        Implementierung und Test der Socialite-Authentifizierung in Laravel

        Jan 03, 2025 am 11:17 AM

        Implementing & testing Socialite authentication in Laravel

        Laravel Socialite ist ein Laravel-Erstanbieterpaket, das Entwickler bei der Implementierung der sozialen OAuth- und OAuth2-Authentifizierung in ihren Anwendungen unterstützt. Es verfügt über integrierte Unterstützung für Facebook, Twitter, Google, LinkedIn, GitHub, GitLab und Bitbucket. Socialite kann andere Anbieter durch Community-Pakete unterstützen.

        Dieser Beitrag wird:

        • Erkl?ren Sie, was Socialite tut und was nicht.
        • Zeigen Sie, wie Sie die Google-Authentifizierung über Socialite in ein neues Laravel-Projekt integrieren.
        • Zeigen Sie ein Beispiel für den Test von Socialite.

        TLDR:Sie k?nnen das abgeschlossene Projekt auf meinem GitHub ansehen. Werfen Sie einen Blick darauf, wenn Sie lieber nur den fertigen Code lesen m?chten.

        Was macht Laravel Socialite und was nicht?

        Socialite ist ein kleines Paket, dessen Haupt-API haupts?chlich aus zwei Hauptmethoden besteht:

        • Socialite::driver($authProvider)->redirect() leitet den Benutzer zum angegebenen Authentifizierungsanbieter weiter und übergibt alle erforderlichen Informationen über URL-Parameter an den Anbieter.
        • Socialite::driver($authProvider)->user() ruft vom Authentifizierungsanbieter zurückgegebene Benutzerdaten ab und stellt sie dem Endpunkt zur Verfügung.

        Es gibt zus?tzliche Unterstützungsmethoden für Einstellungsbereiche und optionale Parameter. Sie k?nnen darüber in der Socialite-Dokumentation nachlesen.

        Socialite macht nicht Folgendes:es überl?sst die Implementierung dieser Funktionen dem Entwickler:

        • ? Erstellen Sie Datenbanktabellen oder -spalten, die zum Speichern von Social-Authentifizierungsdaten erforderlich sind.
        • ? Erstellen Sie Benutzer, die w?hrend des Authentifizierungsprozesses nicht vorhanden sind.
        • ? Authentifizieren Sie den Benutzer nach einem erfolgreichen OAuth-Flow.
        • ? OAuth-Tokens aktualisieren.

        Voraussetzungen: Erstellen eines Google Cloud-Projekts

        Wir werden ein kleines Socialite-Projekt aufsetzen, das es dem Benutzer erm?glicht, sich über Google zu authentifizieren. Dazu müssen Sie eine Google-App erstellen.

        Erstellen Sie zun?chst ein neues Google Cloud-Projekt und konfigurieren Sie dann einen OAuth-Zustimmungsbildschirm für das Projekt. Setzen Sie den Benutzertyp auf extern und aktivieren Sie dann die folgenden Bereiche:

        • .../auth/userinfo.email
        • .../auth/userinfo.profile

        Nachdem Sie den Zustimmungsbildschirm konfiguriert haben, erstellen Sie eine OAuth 2.0-Client-ID, indem Sie die Seite mit den Google Cloud-Anmeldeinformationen besuchen. Bewahren Sie die Client-ID und das Client-Geheimnis auf: Wir werden sie sp?ter im Projekt verwenden.

        Einrichten eines minimalen Laravel-Projekts mit Socialite

        Erstellen Sie ein neues Laravel-Projekt:

        laravel new socialite-tests
        

        W?hlen Sie im Installationsprogramm die folgenden Optionen aus:

         ┌ Would you like to install a starter kit? ────────────────────┐
         │ No starter kit                                               │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which testing framework do you prefer? ──────────────────────┐
         │ Pest                                                         │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which database will your application use? ───────────────────┐
         │ SQLite                                                       │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Would you like to run the default database migrations? ──────┐
         │ Yes                                                          │
         └──────────────────────────────────────────────────────────────┘
        

        Wechseln Sie in das Projektverzeichnis und installieren Sie Socialite.

        laravel new socialite-tests
        

        Erstellen Sie eine neue Migration.

         ┌ Would you like to install a starter kit? ────────────────────┐
         │ No starter kit                                               │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which testing framework do you prefer? ──────────────────────┐
         │ Pest                                                         │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which database will your application use? ───────────────────┐
         │ SQLite                                                       │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Would you like to run the default database migrations? ──────┐
         │ Yes                                                          │
         └──────────────────────────────────────────────────────────────┘
        

        Fügen Sie den folgenden Code in die neu erstellte Migrationsdatei in Datenbank/Migrationen ein:

        cd socialite-tests
        composer require laravel/socialite
        

        Diese Migration fügt Felder hinzu, die von Socialite bereitgestellt werden, wenn sich der Benutzer erfolgreich authentifiziert. In unserer Implementierung fügen wir diese Felder der Einfachheit halber direkt zur Benutzertabelle hinzu. Wenn Sie mehr Anbieter als Google unterstützen m?chten, m?chten Sie m?glicherweise eine separate Tabelle erstellen, in der mehrere Anbieter pro Benutzer gespeichert werden k?nnen.

        Wir legen das Passwort so fest, dass es nullbar sein kann, da ein Benutzer niemals ein Passwort festlegen wird, wenn er sich nur über Google authentifiziert. Wenn Ihre App soziale Authentifizierung und Passwortauthentifizierung zul?sst, müssen Sie best?tigen, dass das Passwort nicht leer oder null ist, wenn ein Benutzer versucht, sich über ein Passwort anzumelden.

        Führen Sie die Migration aus.

        php artisan make:migration add_socialite_fields_to_users
        

        Fügen Sie in config/services.php den folgenden Codeblock am Ende des Services-Arrays hinzu. Eine vollst?ndige Liste der gültigen Socialite-Dienstnamen finden Sie in den Konfigurationsdokumenten.

        <?php
        // database/migrations/2024_12_31_075619_add_socialite_fields_to_users.php
        
        use Illuminate\Database\Migrations\Migration;
        use Illuminate\Database\Schema\Blueprint;
        use Illuminate\Support\Facades\Schema;
        
        return new class extends Migration
        {
            /**
             * Run the migrations.
             */
            public function up(): void
            {
                Schema::table('users', function (Blueprint $table) {
                    $table->string('google_id')->default('');
                    $table->string('google_token')->default('');
                    $table->string('google_refresh_token')->default('');
        
                    // If your app allows both password and social logins, you
                    // MUST validate that the password is not blank during login.
                    // If you do not, an attacker could gain access to an account
                    // that uses social login by only knowing the email.
                    $table->string('password')->nullable()->change();
                });
            }
        
            /**
             * Reverse the migrations.
             */
            public function down(): void
            {
                Schema::table('users', function (Blueprint $table) {
                    $table->dropColumn('google_id');
                    $table->dropColumn('google_token');
                    $table->dropColumn('google_refresh_token');
                    $table->string('password')->nullable(false)->change();
                });
            }
        };
        

        Fügen Sie Folgendes zu .env hinzu und verwenden Sie dabei die Anmeldeinformationen Ihrer Google-App, die Sie im Abschnitt ?Voraussetzungen“ erstellt haben.

        php artisan migrate
        

        Ersetzen Sie den Inhalt von Routen/web.php durch den folgenden Code.

        // config/services.php
        
        'google' => [
            'client_id' => env('GOOGLE_CLIENT_ID'),
            'client_secret' => env('GOOGLE_CLIENT_SECRET'),
            'redirect' => '/auth/google/callback',
        ],
        

        Der neue Code in dieser Datei implementiert die Routen für:

        • Weiterleitung an Google für Social Login mit den entsprechenden Informationen.
        • Bearbeitung des Rückrufs von Google. Diese Route erstellt oder aktualisiert einen Benutzer bei der Anmeldung, authentifiziert ihn dann und leitet ihn zur Homepage weiter.
        • Abmelden eines authentifizierten Benutzers.

        Ersetzen Sie abschlie?end den Inhalt von resources/views/welcome.php durch das folgende Markup.

        # .env
        
        GOOGLE_CLIENT_ID="your-google-client-id"
        GOOGLE_CLIENT_SECRET="your-google-client-secret"
        

        Sobald dies abgeschlossen ist, k?nnen wir die App manuell testen, indem wir den Entwicklungsserver ausführen.

        <?php
        // routes/web.php
        
        use App\Models\User;
        use Illuminate\Support\Facades\Auth;
        use Illuminate\Support\Facades\Route;
        use Laravel\Socialite\Facades\Socialite;
        use Laravel\Socialite\Two\InvalidStateException;
        use Laravel\Socialite\Two\User as OAuth2User;
        
        Route::get('/', function () {
            return view('welcome');
        });
        
        Route::get('/auth/google/redirect', function () {
            return Socialite::driver('google')->redirect();
        });
        
        Route::get('/auth/google/callback', function () {
            try {
                /** @var OAuth2User $google_user */
                $google_user = Socialite::driver('google')->user();
            } catch (InvalidStateException $exception) {
                abort(400, $exception->getMessage());
            }
        
            $user = User::updateOrCreate([
                'email' => $google_user->email,
            ], [
                'google_id' => $google_user->id,
                'name' => $google_user->name,
                'google_token' => $google_user->token,
                'google_refresh_token' => $google_user->refreshToken,
            ]);
        
            Auth::login($user);
            return redirect('/');
        });
        
        Route::get('/auth/logout', function () {
            Auth::logout();
            return redirect('/');
        });
        

        Wenn Sie auf den Link Mit Google anmelden klicken, sollten Sie den OAuth2-Ablauf durchlaufen und zur Startseite weitergeleitet werden, auf der Sie Informationen über den neu erstellten Benutzer von Google sehen k?nnen.

        Testen von Socialite mit Pest

        Unsere manuellen Tests funktionieren, aber wir m?chten automatisierte Tests, um sicherzustellen, dass wir diese Funktionalit?t in Zukunft nicht versehentlich beeintr?chtigen.

        Mit dem folgenden Befehl k?nnen wir eine neue Testdatei erstellen.

        <!-- resources/views/welcome.php -->
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Laravel Socialite Testing Example</title>
        </head>
        <body>
            <h1>Laravel Socialite Testing Example</h1>
            @if (auth()->check())
                <p>User is authenticated.</p>
                <p>Name: {{ auth()->user()->name }}</p>
                <p>Email: {{ auth()->user()->email }}</p>
                <p><a href="/auth/logout">Logout</a></p>
            @else
                <p>User is not authenticated.</p>
                <p>
                    <a href="/auth/google/redirect">Login with Google</a>
                </p>
            @endif
        </body>
        </html>
        

        Ersetzen Sie den Inhalt der neu erstellten Datei ?tests/Feature/AuthRoutesTest.php“ durch Folgendes.

        php artisan serve
        

        So funktionieren die Tests

        Beim Testen der Weiterleitungsroute testen wir, ob Socialite zur richtigen URL weiterleitet und die richtigen URL-Parameter übergibt.

        Beim Testen der Rückrufrouten machen wir uns über Socialite lustig. Mocking ist nicht meine Lieblingsoption: In einer idealen Welt k?nnten wir Socialite durch eine andere OAuth2-Implementierung ersetzen und unsere Tests würden immer noch funktionieren. Allerdings gibt es keine einfache M?glichkeit, sich in die Autorisierungsanfrage einzuklinken, die Socialite sendet, um das Zugriffstoken zu pf?nden. Aus diesem Grund ist Spott der praktischste Ansatz, um Socialite zu testen.

        Es ist mühsam, Fluent-APIs über Mockery zu verspotten: Sie müssen mit dem Endaufruf beginnen und sich rückw?rts vorarbeiten.

        Hier ist die Socialite-Methode, die unser Callback-Endpunkt aufruft.

        laravel new socialite-tests
        

        So muss das durch Mockery verspottet werden:

         ┌ Would you like to install a starter kit? ────────────────────┐
         │ No starter kit                                               │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which testing framework do you prefer? ──────────────────────┐
         │ Pest                                                         │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Which database will your application use? ───────────────────┐
         │ SQLite                                                       │
         └──────────────────────────────────────────────────────────────┘
        
         ┌ Would you like to run the default database migrations? ──────┐
         │ Yes                                                          │
         └──────────────────────────────────────────────────────────────┘
        

        Abschlie?end führen wir einen Test durch, um sicherzustellen, dass die direkte Navigation zur Rückruf-URL au?erhalb des OAuth-Ablaufs einen 400-Statuscode zurückgibt. Wir haben den Aufruf von Socialite::driver('google')->user() im Callback-Endpunkt innerhalb eines try/catch-Blocks verpackt. Wenn wir den Socialite-Aufruf nicht in einen Try/Catch-Block eingeschlossen h?tten und jemand die Rückruf-URL in seinen Browser eingegeben h?tte, würde der Endpunkt eine Ausnahme mit einem HTTP-500-Statuscode ausl?sen. Wenn in Ihrem Team die überwachung von 500 Statuscodes eingerichtet ist, kann dies dazu führen, dass jemand mitten in der Nacht angerufen wird.

        Einpacken

        Dies ist eine minimale Integration und es k?nnte noch viel mehr implementiert werden. Wenn wir eine Integration mit einem sozialen Anbieter implementieren würden, bei dem sich die E-Mail-Adresse des Benutzers ?ndern k?nnte, würde diese Implementierung nicht funktionieren, da sie mit der E-Mail-Adresse abgeglichen wird. Wenn der Benutzer seine E-Mail-Adresse innerhalb unserer App ?ndern k?nnte, würde diese Implementierung aus demselben Grund auch nicht funktionieren. Nachdem Sie nun jedoch gesehen haben, wie man Socialite testet, k?nnen Sie Tests für diese Szenarien schreiben und die zugrunde liegende Implementierung so ?ndern, dass sie erfolgreich sind.

        Ich habe viele Blogartikel und Forenbeitr?ge über Socialite gelesen, bevor ich verstanden habe, wie ich meine eigene Implementierung aufbaue, wie ich sie teste und worüber ich nachdenken sollte. Einige davon m?chte ich hier würdigen.

        • Wie ich Integrationstests für von Laravel Socialite betriebene Apps schreibe von Stefan Zweifel
        • ServerSideUp-Forum: Socialite Best Practices, ein Gespr?ch
        • Stack Overflow: So testen Sie Laravel Socialite
        • Stack Exchange: Soziale Anmeldungen mit einer passenden E-Mail verknüpfen oder nicht verknüpfen
        • Stapelaustausch: Umgang mit verbundenen sozialen Konten und potenziellen Waisenkindern

        Lesen Sie diese, wenn Sie tiefer in die Materie eintauchen m?chten. Lassen Sie mich auch wissen, ob Sie an Teil 2 dieses Beitrags interessiert sind, in dem ich mich mit der Handhabung mehrerer sozialer Anbieter, der Handhabung, wenn ein Benutzer seine E-Mail-Adresse ?ndert, oder der Handhabung von Aktualisierungstokens befasse.

        Das obige ist der detaillierte Inhalt vonImplementierung und Test der Socialite-Authentifizierung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

        Erkl?rung dieser Website
        Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

        Hei?e KI -Werkzeuge

        Undress AI Tool

        Undress AI Tool

        Ausziehbilder kostenlos

        Undresser.AI Undress

        Undresser.AI Undress

        KI-gestützte App zum Erstellen realistischer Aktfotos

        AI Clothes Remover

        AI Clothes Remover

        Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

        Clothoff.io

        Clothoff.io

        KI-Kleiderentferner

        Video Face Swap

        Video Face Swap

        Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

        Hei?e Werkzeuge

        Notepad++7.3.1

        Notepad++7.3.1

        Einfach zu bedienender und kostenloser Code-Editor

        SublimeText3 chinesische Version

        SublimeText3 chinesische Version

        Chinesische Version, sehr einfach zu bedienen

        Senden Sie Studio 13.0.1

        Senden Sie Studio 13.0.1

        Leistungsstarke integrierte PHP-Entwicklungsumgebung

        Dreamweaver CS6

        Dreamweaver CS6

        Visuelle Webentwicklungstools

        SublimeText3 Mac-Version

        SublimeText3 Mac-Version

        Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

        Hei?e Themen

        PHP-Tutorial
        1488
        72
        Variabler PHP -Bereich erkl?rt Variabler PHP -Bereich erkl?rt Jul 17, 2025 am 04:16 AM

        H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

        Wie behandle ich Datei -Uploads sicher in PHP? Wie behandle ich Datei -Uploads sicher in PHP? Jul 08, 2025 am 02:37 AM

        Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

        Code in PHP aus dem Code ausgehen Code in PHP aus dem Code ausgehen Jul 18, 2025 am 04:57 AM

        Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

        Wie arbeiten Generatoren in PHP? Wie arbeiten Generatoren in PHP? Jul 11, 2025 am 03:12 AM

        AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

        Tipps zum Schreiben von PHP -Kommentaren Tipps zum Schreiben von PHP -Kommentaren Jul 18, 2025 am 04:51 AM

        Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

        So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu Jul 12, 2025 am 03:15 AM

        In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

        SchnellpHP -Installations -Tutorial SchnellpHP -Installations -Tutorial Jul 18, 2025 am 04:52 AM

        Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

        PHP lernen: Ein Anf?ngerführer PHP lernen: Ein Anf?ngerführer Jul 18, 2025 am 04:54 AM

        Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

        See all articles
      • <big id="tjb9d"></big>
        <abbr id="tjb9d"></abbr>