Я хочу отправить данные из одного php-файла в другой php-файл для проверки подлинности пользователя. Ни один из них не может быть html-файлами. И я не могу отправить его как заголовок, как он появляется в URL-адресе. Plz дайте мне несколько советов.
Вы можете использовать CURL для этого, чтобы отправить безопасный запрос POST
, даже если сценарий получателя находится на другом сервере. Это не будет показывать ничего в URL-адресе, однако Firebug может увидеть запрос. Чтобы обойти это, просто убедитесь, что ваш auth key
и пароль, который отправляется, хэшируются .
Что-то вроде этого (untested)
Вот сценарий отправителя
<?php ///// Sender.php /////// //Set up some vars $url = 'http://domain.com/Receiver.php'; $user = 'someusername'; $pw = 'somepassword'; $auth_key = 'YourSecretAuthKey'; $fields = array( 'auth'=>urlencode($auth_key), 'user'=>urlencode($user), 'pw'=>urlencode($pw) ); // Init. string $fields_string = ''; // URL-ify stuff foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string,'&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); //execute post $result = curl_exec($ch); //close connection curl_close($ch); ?>
И сценарий получателя:
<?php ////// Receiver.php ////// if(!isset($_POST['authkey']))die('Error: No Auth Key'); if(!isset($_POST['user']))die('Error: No Username!'); if(!isset($_POST['pw']))die('Error: No password!'); $auth_key = $_POST['auth']; $correct_authkey = 'YourSecretKey'; if($auth_key!=$correct_authkey)die('WRONG AUTH KEY!!!!'); $user = $_POST['user']; $pw = $_POST['pw']; //// Here you can process your username and password ?>
Запрос POST
довольно безопасен, но если вы обрабатываете важную информацию, вы всегда можете хэш-ключ и пароль. Надеюсь это поможет.
Шифровать или хешировать данные аутентификации и отправлять их как часть тела POST
или URL. На принимающей стороне просмотрите $_POST
или $_GET
.
Вы должны включить информацию об аутентификации в другой файл:
<?php require_once('authentication_infomation.php'); doTheAuthentication($authentication_information); ?>
Видеть:
http://se.php.net/manual/en/function.require-once.php
Чтобы получить больше информации.