wake-up-neo.net

Das Facebook-SDK hat einen Fehler zurückgegeben: Die Überprüfung der Überprüfung der Fälschung von Standortinformationen ist fehlgeschlagen. Der "state" -Parameter von URL und Sitzung stimmt nicht überein

ich versuche, die Facebook-Benutzer-ID mit der PHP-SDK wie folgt zu erhalten 

$fb = new Facebook\Facebook([
    'app_id' => '11111111111',
    'app_secret' => '1111222211111112222',
    'default_graph_version' => 'v2.4',
]);

$helper = $fb->getRedirectLoginHelper();


$permissions = ['public_profile','email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://MyWebSite', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';


    try {
        $accessToken = $helper->getAccessToken();
        var_dump($accessToken);
    } catch (Facebook\Exceptions\FacebookResponseException $e) {
        // When Graph returns an error
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        // When validation fails or other local issues
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }

    if (!isset($accessToken)) {
        if ($helper->getError()) {
            header('HTTP/1.0 401 Unauthorized');
            echo "Error: " . $helper->getError() . "\n";
            echo "Error Code: " . $helper->getErrorCode() . "\n";
            echo "Error Reason: " . $helper->getErrorReason() . "\n";
            echo "Error Description: " . $helper->getErrorDescription() . "\n";
        } else {
            header('HTTP/1.0 400 Bad Request');
            echo 'Bad request';
        }
        exit;
    }

// Logged in
    echo '<h3>Access Token</h3>';
    var_dump($accessToken->getValue());

// The OAuth 2.0 client handler helps us manage access tokens
    $oAuth2Client = $fb->getOAuth2Client();

// Get the access token metadata from /debug_token
    $tokenMetadata = $oAuth2Client->debugToken($accessToken);
    echo '<h3>Metadata</h3>';
    var_dump($tokenMetadata);

// Validation (these will throw FacebookSDKException's when they fail)
    $tokenMetadata->validateAppId($config['11111111111']);
// If you know the user ID this access token belongs to, you can validate it here
//$tokenMetadata->validateUserId('123');
    $tokenMetadata->validateExpiration();

    if (!$accessToken->isLongLived()) {
        // Exchanges a short-lived access token for a long-lived one
        try {
            $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
        } catch (Facebook\Exceptions\FacebookSDKException $e) {
            echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
            exit;
        }

        echo '<h3>Long-lived</h3>';
        var_dump($accessToken->getValue());
    }

    $_SESSION['fb_access_token'] = (string)$accessToken;

aber es gibt mir diesen Fehler:

Facebook SDK returned an error: 
Cross-site request forgery validation failed. 
The "state" param from the URL and session do not match.

bitte alle hilfe ich bin neu in php und Facebook sdk danke für jede hilfe im voraus.

51
Fadi

Ich habe herausgefunden, dass, solange ich PHP -Sitzungen aktiviert habe, bevor die Login-URL generiert wurde, und an der Spitze des Skripts, zu dem Facebook letztendlich weiterleitet, es von selbst funktioniert, ohne dass ein Cookie gesetzt wird ( wie in ale500's Antwort ). Dies verwendet die 5.1-Version des SDK.

An der Spitze beider Skripte habe ich hinzugefügt ...

if(!session_id()) {
    session_start();
}

... und es "funktionierte".

Hier ist ein komplettes Beispiel für Barebones, das für mich funktioniert hat:

auth.php

if (!session_id()) {
    session_start();
}

$oFB = new Facebook\Facebook([
    'app_id'     => FACEBOOK_APP_ID,
    'app_secret' => FACEBOOK_APP_SECRET
]);

$oHelper = self::$oFB->getRedirectLoginHelper();
$sURL = $oHelper->getLoginUrl(FACEBOOK_AUTH_CALLBACK, FACEBOOK_PERMISSIONS);

// Redirect or show link to user.

auth_callback.php

if (!session_id()) {
    session_start();
}

$oFB = new Facebook\Facebook([
    'app_id'     => FACEBOOK_APP_ID,
    'app_secret' => FACEBOOK_APP_SECRET
]);

$oHelper = self::$oFB->getRedirectLoginHelper();
$oAccessToken = $oHelper->getAccessToken();
if ($oAccessToken !== null) {
    $oResponse = self::$oFB->get('/me?fields=id,name,email', $oAccessToken);
    print_r($oResponse->getGraphUser());
}

Warum?

Als zusätzliche Anmerkung wird dies in den Dokumenten des Repos erläutert. Beachten Sie die Warnung auf dieser Seite .

Warnung: Der FacebookRedirectLoginHelper verwendet Sitzungen, um einen CSRF-Wert zu speichern. Sie müssen sicherstellen, dass Sie Sitzungen aktiviert haben, bevor Sie die getLoginUrl () -Methode aufrufen. Dies wird normalerweise in den meisten Web-Frameworks automatisch durchgeführt. Wenn Sie jedoch kein Web-Framework verwenden, können Sie session_start () hinzufügen. oben in Ihren login.php- & login-callback.php-Skripts. Sie können die standardmäßige Sitzungsbehandlung überschreiben - siehe Erweiterungspunkte unten.

Ich füge diese Anmerkung hinzu, da es wichtig ist, im Hinterkopf zu behalten, wenn Sie Ihre eigene Sitzungsverwaltung ausführen oder wenn Sie mehrere Webserver parallel betreiben. In diesen Fällen funktioniert die Standardsitzung von php nicht immer.

93
enobrev

fügen Sie diesen Code nach .__ ein. $ helper = $ fb-> getRedirectLoginHelper ();

  $_SESSION['FBRLH_state']=$_GET['state'];

und es wird funktionieren oder für mehr Details besuchen Sie Facebook Login-Apps

63
zratan

Viele gute Antworten wurden bereits erwähnt. Hier ist die Antwort, die mir geholfen hat.

Ich fand, dass das Problem Cross-Site-Request-Forgery-Validierung fehlgeschlagen. Erforderlicher Parameter „state“ fehlt im FB-Code und hier ist die Lösung

Nach dieser Zeile

$helper = $fb->getRedirectLoginHelper();

Fügen Sie den folgenden Code hinzu,

if (isset($_GET['state'])) {
    $helper->getPersistentDataHandler()->set('state', $_GET['state']);
}
48
G.Ashok Kumar

Dieser Fehler ist bei der Verwendung des Facebook-SDK in Symfony2 aufgetreten. Dabei wurde eine Twig-Erweiterung geschrieben, um Daten aus der API in Vorlagen anzuzeigen.

Die Lösung für mich war das Hinzufügen von 'persistent_data_handler'=>'session' zur Facebook-Objekt config, wodurch die Statusdaten in einem Sitzungsschlüssel statt im Speicher gespeichert werden:

$fb = new Facebook\Facebook([
    'app_id' => 'APP_ID',
    'app_secret' => 'APP_SECRET',
    'default_graph_version' => 'v2.4',
    'persistent_data_handler'=>'session'
]);

Standardmäßig wurde der integrierte Speicherhandler verwendet, der für mich nicht ordnungsgemäß funktioniert hat. Möglicherweise, weil einige Funktionen von einer Twig-Erweiterung aus aufgerufen werden, da der Speicherhandler funktioniert, wenn das SDK ausschließlich in normalen Controllern/Diensten verwendet wird.

Anscheinend wird der Status beim Aufruf von getLoginUrl() festgelegt und bei jedem Aufruf von getAccessToken() abgerufen. Wenn der gespeicherte Status null zurückgibt (da Ihr Datenhandler nicht als persistent so wie er sein sollte) zurückgeht, schlägt die CSRF-Validierungsprüfung fehl. 

Wenn Sie Sitzungen auf eine bestimmte Weise behandeln müssen oder den Status an einem anderen Ort speichern möchten, können Sie auch Ihren eigenen Handler mit 'persistent_data_handler' => new MyPersistentDataHandler() schreiben. Verwenden Sie dazu den Beispiel für FacebookSessionPersistentDataHandler.

20
Fx32

Dies ist der Fall, wenn die Facebook-Bibliothek den Status, den sie von Facebook zurückerhält, nicht mit dem Status abgleichen kann, den sie standardmäßig in der Sitzung festgelegt hat. Wenn Sie ein Framework wie Laravel, Yii2 oder Kohana verwenden, das seinen eigenen Sitzungsspeicher implementiert, funktioniert die standardmäßige Facebook-Sitzungsimplementierung wahrscheinlich nicht.

Um dies zu beheben, müssen Sie mithilfe der Sitzungsbibliothek Ihres Frameworks eine eigene Implementierung von PersistentDataInterface erstellen und diese an den Facebook\Facebook-Konstruktor übergeben.

Hier ist ein Beispiel eines Laravel-Persistenz-Handlers aus Facebook :

use Facebook\PersistentData\PersistentDataInterface;

class MyLaravelPersistentDataHandler implements PersistentDataInterface
{
  /**
   * @var string Prefix to use for session variables.
   */
  protected $sessionPrefix = 'FBRLH_';

  /**
   * @inheritdoc
   */
  public function get($key)
  {
    return \Session::get($this->sessionPrefix . $key);
  }

  /**
   * @inheritdoc
   */
  public function set($key, $value)
  {
    \Session::put($this->sessionPrefix . $key, $value);
  }
}

Beispielkonstruktorparameter:

$fb = new Facebook\Facebook([
  // . . .
  'persistent_data_handler' => new MyLaravelPersistentDataHandler(),
  // . . .
 ]);

Weitere Informationen hier: https://developers.facebook.com/docs/php/PersistentDataInterface/5.0.0

14
George

Als ich schließlich in FB-Code schaute, entdeckte ich, dass das Problem bestand 

Fehler bei der Überprüfung der Fälschung von Standortfehlern fehlgeschlagen. Erforderlicher Parameter "state" fehlt

und ähnliche Zeichen werden durch die Variable PHP $_SESSION['FBRLH_state'] verursacht, die aus irgendeinem "seltsamen" Grund beim Aufruf der Login-Callback-Datei durch den FB auftritt.

Zur Lösung speichere ich diese Variable "FBRLH_state" NACH dem Aufruf der Funktion $helper->getLoginUrl(...). Ist sehr wichtig, nur zu tun, wenn der Aufruf dieser Funktion innerhalb dieser Funktion ist, wenn die Variable $_SESSION['FBRLH_state'] gefüllt ist.

Unten ein Beispiel für meinen Code in der login.php:

$uri=$helper->getLoginUrl($uri, $permissions);
foreach ($_SESSION as $k=>$v) {                    
    if(strpos($k, "FBRLH_")!==FALSE) {
        if(!setcookie($k, $v)) {
            //what??
        } else {
            $_COOKIE[$k]=$v;
        }
    }
}
var_dump($_COOKIE);

Und in der login-callback.php vor dem Aufruf des gesamten FB-Codes:

foreach ($_COOKIE as $k=>$v) {
    if(strpos($k, "FBRLH_")!==FALSE) {
        $_SESSION[$k]=$v;
    }
}

Denken Sie außerdem daran, auch Code für die Sitzung mit PHP anzugeben.

if(!session_id()) {
    session_start();
}
...
...
...
...
<?php session_write_close() ?>

Ich hoffe, diese Antwort kann Ihnen helfen, 8-10 Stunden Arbeit zu sparen:) Tschüss, Alex.

8
ale500

Für mich bestand das Problem darin, dass vor dem Skript keine Sitzung ausgeführt wurde.

Also habe ich session_start(); vor der Instantiierung der Facebook-Klasse hinzugefügt.

7
Nino Škopac

Das gleiche Problem ist mir auf Laravel 5.4 aufgefallen. Ich habe dieses Problem durch Putten gelöst 

session_start();

am Anfang des Skripts.

Im Folgenden finden Sie den Beispiel-Namespace für Laravel-Controller, um ein Beispiel für die Funktionsweise zu geben.

<?php
namespace App\Http\Controllers;
session_start();
use Facebook\Facebook as Facebook;
?>

das Problem tritt auf, weil es noch nicht gestartet ist. Durch das Hinzufügen von Sitzungsbeginn oben im Skript starten wir die Sitzung gerade.

hoffe es kann jemandem helfen .. 

4
usama

Das Facebook-Objekt hat eine Instanzvariable namens persistentDataHandler, normalerweise eine Instanz von FacebookSessionPersistentDataHandler, die über eine set- und eine get-Methode für den Zugriff auf die nativen PHP -Sitzungen verfügt.

Beim Generieren der Rückruf-URL mit: 

$loginUrl = $helper->getLoginUrl($callback_url, $permissions);

Die Methode FacebookRedirectLoginHelper->getLoginUrl() erstellt eine 32-stellige zufällige Zeichenfolge, fügt sie dem $loginUrl hinzu und speichert sie mit der set-Methode von persistentDataHandler im Code.

$_SESSION['FBRLH_' . 'state']

Wenn später $helper->getAccessToken(); aufgerufen wird, wird der Zustand param in der URL mit dem in derselben Sitzung gespeicherten verglichen, um CSRF zu verhindern. Wenn dies nicht der Fall ist, wird diese Ausnahme ausgelöst.

FacebookSDKException: Die Validierung der Bestätigung für fälschungsübergreifende Anforderungsfälschung ist fehlgeschlagen. Erforderlicher Parameter "state" fehlt.

Nachdem dies gesagt wurde, müssen Sie sicherstellen, dass Ihre native PHP - Sitzungsfunktion während dieses Vorgangs richtig eingestellt ist. Sie können es überprüfen, indem Sie hinzufügen 

die($_SESSION['FBRLH_' . 'state']);

nach dem

$loginUrl = $helper->getLoginUrl($callback_url, $permissions);

und davor 

$accessToken = $helper->getAccessToken();

um zu sehen, ob diese 32-stellige Zeichenfolge vorhanden ist. 

Ich hoffe es hilft!

3
Chao Chen

Mit Symfony funktioniert es nicht, da die Art und Weise der Sitzung verwaltet wird. 

Um das Problem zu beheben, können Sie einen neuen Handler erstellen, der mit der Sitzung von symfony arbeitet.

FacebookDataHandlerSymfony.php: 

<?php

use Facebook\PersistentData\PersistentDataInterface;
use Symfony\Component\HttpFoundation\Session\Session;

class FacebookDataHandlerSymfony implements PersistentDataInterface
{

    private $session;

    public function __construct()
    {
        $this->session = new Session();
    }

    public function get($key)
    {
        return $this->session->get('FBRLH_' . $key);
    }

    public function set($key, $value)
    {
        $this->session->set('FBRLH_' . $key, $value);
    }

}

Und wenn Sie das FB-Objekt erstellen, müssen Sie nur die neue Klasse angeben: 

$this->fb = new Facebook([
            'app_id' => '1234',
            'app_secret' => '1324',
            'default_graph_version' => 'v2.8',
            'persistent_data_handler' => new FacebookDataHandlerSymfony()
        ]);
2
user4520510

Dies könnte etwas spät sein, aber ich hoffe, es hilft anderen, da dieses Problem immer noch besteht.

Ich hatte dieses Problem für eine Weile und ich habe herumgesucht und viele verschiedene Lösungen gesehen, von denen viele die CSRF-Prüfung deaktivieren. Nach allem, was ich gelesen habe, hat dies für mich funktioniert.

Soweit ich verstehe, wird diese Fehlermeldung angezeigt, wenn Ihre Weiterleitungs-URL nicht der Adresse entspricht, die Sie in den App-Einstellungen festgelegt haben. Daher wurde mein Problem leicht gelöst. Ich habe jedoch auch festgestellt, dass Personen Probleme damit haben, dass ihre Sitzung nicht ordnungsgemäß gestartet wurde Ich werde beide Themen behandeln.

Schritt 1: Stellen Sie sicher, dass Ihre Sitzung begonnen hat, wenn dies erforderlich ist.

zum Beispiel: fb-config.php

session_start();
include_once 'path/to/Facebook/autoload.php';

$fb = new \Facebook\Facebook([
    'app_id' => 'your_app_id',
    'app_secret' => 'your_secret_app_id',
    'default_graph_version' => 'v2.10'
]);

$helper = $fb->getRedirectLoginHelper();

wenn sich Ihr Facebook-Rückrufcode in einer anderen Datei außer der Konfiguration befindet, starten Sie auch die Sitzung für diese Datei.

zum Beispiel: fb-callback.php

session_start();
include_once 'path/to/fb-config.php';

try {
    $accessToken = $helper->getAccessToken();
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
    echo "Response Exception: " . $e->getMessage();
    exit();
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
    echo "SDK Exception: " . $e->getMessage();
    exit();
}

/** THE REST OF YOUR CALLBACK CODE **/

Nun, was hat mein aktuelles Problem gelöst?.

Schritt 3: Richten Sie Ihre Weiterleitungs-URL in den App-Einstellungen ein.

Wechseln Sie in den Einstellungen für Ihre Facebook-Anmelde-App zu den Valid OAuth-Weiterleitungs-URIs, in der Sie die URL, die auf Ihre Datei fb-callback.php verweist, hinzugefügt haben sollen.

http://example.com/fb-callback.php

AND ALSO

http://www.example.com/fb-callback.php

richten Sie dann die Weiterleitungs-URL wie folgt ein.

$redirectURL = "http://".$_SERVER['SERVER_NAME']."/fb-callback.php";
$permissions = ['email'];
$fLoginURL = $helper->getLoginUrl($redirectURL, $permissions);

Warum sowohl mit als auch ohne www und warum SERVER_NAME verwenden?

da Ihre Valid OAuth-Weiterleitungs-URI mit Ihrer Weiterleitungs-URL in Ihrem Code übereinstimmen muss, und wenn Sie in Ihren App-Einstellungen nur Ihre OAuth-Weiterleitung auf http://example.com/fb-callback.php und setzen Richten Sie Ihre $ redirectURL als http://example.com/fb-bacllback.php so ein, dass sie übereinstimmt, aber der Benutzer hat Ihre Site als http://www.example.com und dann als Benutzer eingegeben wird der Facebook-SDK-Fehler angezeigt: Die Überprüfung der Bestätigung der Standortüberprüfung von Anfragen ist fehlgeschlagen. Erforderlicher Parameter "state" fehlt in den persistenten Daten, da die URL, unter der sich der Benutzer befindet, nicht exakt der Einstellung entspricht, die Sie eingerichtet haben. Warum? Ich habe keine verdammte Idee.

Mein Ansatz macht es so, wenn der Nutzer Ihre Site als http://example.com oder http://www.example.com betritt, wird er immer mit den Einstellungen Ihrer App-Einstellungen übereinstimmen. Warum? weil $ _SERVER ['SERVER_NAME'] die Domäne mit oder ohne WWW zurückgibt, je nachdem, wie der Benutzer die URL in den Browser eingegeben hat.

Dies sind meine Erkenntnisse und es geht um das Einzige, was für mich funktioniert hat, ohne die CSRF-Prüfung zu entfernen und bisher keine Probleme.

Ich hoffe das hilft.

2
BlueSun3k1

sie können dies einfach tun, um die Sitzung mit dem neuen Status festzulegen

<?php
if(isset($_GET['state'])) {
      if($_SESSION['FBRLH_' . 'state']) {
          $_SESSION['FBRLH_' . 'state'] = $_GET['state'];
      }
}
?>

sie erhalten diese Fehlermeldung, wenn sich der Origin-Hostname von dem nach der Authentifizierung angegebenen Ziel-Hostnamen unterscheidet.

$loginUrl = $helper->getLoginUrl('http://MyWebSite', $permissions);

mit dieser aussage, wenn der besucher auf ihrer website http://www.mywebsite.com/ verwendet wird, wird der standortübergreifende fehler ausgelöst.

Sie müssen sicherstellen, dass Origin und Zielhostname genau identisch sind, einschließlich des eventuellen www-Präfixes.

Feste Version:

$loginUrl = $helper->getLoginUrl('http://'.$_SERVER['SERVER_NAME'], $permissions);
2
Jean.R

Einfache Lösung für mich ... Ich habe geändert:

$loginUrl = $helper->getLoginUrl('http://www.MYWEBSITE.ca/index_callback.php', $permissions);

zu:

$loginUrl = $helper->getLoginUrl('http://MYWEBSITE.ca/index_callback.php', $permissions);

durch das Entfernen von 'www' wurde das Problem behoben.

1
Mathieu Wilson

In meinem Fall habe ich den Fehler überprüft und einen Fehler gefunden, der mich zu einer Lösung mit ausgeführtem Code führte:

date_default_timezone_set('Europe/Istanbul');

vor dem Skript. Lief wie am Schnürchen. Überprüfen Sie für Ihren Standort: timezones.europe.php

1
Roman Losev

Yii2-Lösung, die für mich funktioniert:

use Facebook\PersistentData\PersistentDataInterface;
use Yii;

class PersistentDataHandler implements PersistentDataInterface
{
    /**
     * @var string Prefix to use for session variables.
     */
    protected $sessionPrefix = 'FBRLH_';

    public function get($key)
    {
        return Yii::$app->session->get($this->sessionPrefix . $key);
    }

    public function set($key, $value)
    {
        Yii::$app->session->set($this->sessionPrefix . $key, $value);
    }
}
0
zibra

Könnte jemandem helfen, der Javascript Helper im Frontend zur Authentifizierung des Benutzers verwendet, und in PHP versucht man, access_token aus Login Helper zu extrahieren. Verwenden Sie also folgendes

getJavaScriptHelper();

anstatt

getRedirectLoginHelper();
0
makki

Für mich hat der Sitzungszustand funktioniert

Vollständiger Code (in der Weiterleitungs-URL-PHP) 

$accessToken = '';

$helper = $fb->getRedirectLoginHelper();

if(isset($_GET['state'])){

    $_SESSION['FBRLH_state']=$_GET['state'];
}


try {
    $accessToken = $helper->getAccessToken();
} catch ( Facebook\Exceptions\FacebookResponseException $e ) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();

}
0

Dies ist ein häufiges Problem, mit dem viele Leute in FB Api konfrontiert sind. Dies ist nur ein SITZUNGS-Problem. Um dieses Problem zu lösen, fügen Sie Code wie hinzu.

Bei einem Callback-Skript fügt fb-callback.php normalerweise "session_start ();" Kurz bevor Sie die Facebook-Autoload-Datei einfügen. und dann "$ _SESSION ['FBRLH_state'] = $ _ GET ['state'];" nach dem "$ helper = $ fb-> getRedirectLoginHelper ();" Linie. 

Beispiel: 

<?php 
session_start();
include 'vendor/autoload.php';
include 'config.php'; /*Facebook Config*/
$helper = $fb->getRedirectLoginHelper();
$_SESSION['FBRLH_state']=$_GET['state'];
try {
  $accessToken = $helper->getAccessToken();
} ?>

LÖSUNG FÜR ZWISCHENPROBLEME

Ich habe a) auf den Facebook-Login-Link umgeleitet, b) die Weiterleitung von login.php auf main.php. Die Benutzer würden zu main.php und einigen anderen Seiten reisen und dann wieder zurück im Browser klicken.

Letztendlich würden sie login.php mit einem Haufen Creds treffen, aber Facebook entfernt nach einem einzigen Erfolg den $ _SESSION ['FBRLH_state'], so dass dies auch der Fall wäre, wenn er den richtigen $ _GET ['state'] hätte Fehler raus.

Die Lösung besteht darin, a) intern zu verfolgen, wenn der Benutzer angemeldet ist, und die Wiederholungslogik von Facebook in login.php zu vermeiden, OR b) alle kürzlich gültigen Statusparameter für diesen bestimmten Benutzer (in einer Sitzung möglicherweise) nachverfolgen. welche von Facebook gesetzt wurden und wenn $ _GET ['state'] in diesem Array liegt, dann machen Sie folgendes:

$ _SESSION ['FBRLH_state'] = $ _GET ['state'];

In diesem Fall können Sie dies sicher tun, ohne den CSRF-Schutz zu beschädigen.

0

Ich hatte den gleichen Fehler, weil ich vergessen hatte, "www" hinzuzufügen. an die Absenderadresse. In den Client-OAuth-Einstellungen muss der richtige Name angegeben werden. 

0

Der Fehler wird ausgelöst, wenn sich der Origin-Hostname vom Ziel-Hostnamen unterscheidet [wie von Souch erwähnt]. Wenn Besucher das URL-Adressfeld als " http://website.com " eingaben, unterscheidet sich das von " http://www.website.com ". Wir leiten sie an die richtige URL um, indem Sie die folgenden Codes an oberster Position vor session_start () einfügen.

  if($_SERVER['HTTP_Host']!=='www.website.com'){
  header('location: http://www.website.com');
  }
0
Piya Poonsawat