Как перехватить URL с данными при использовании API на php

#php #mysql #api

#php #mysql #API

Вопрос:

Я пытался выяснить, как перехватить весь URL-адрес веб-сайта, который использует API. У меня есть один скрипт, который передает данные с помощью API, а также у меня есть API, который обрабатывает размещенные данные. Вставка работает, но она вставляет пустые данные в мою базу данных.

Вот мой API

 <?php
$link = mysqli_connect('localhost', 'root', '', 'datauser');
mysqli_set_charset($link,'utf8');

$method = strtolower(array_shift($url_send));

if ($method = 'post') {
$id = $_GET['id'];
$name = $_GET['name'];
$cell = $_GET['cell'];
}



switch ($method) {
case 'get':
  //$sql = "select * from users WHERE user_lname= '$name'"; break;
case 'put':
  //$sql = "update users set $set where user_lname=$name"; break;
case 'post':
  $sql = "insert into users (user_fname, user_lname, user_contact) values ('$name', '$name', '$cell')"; break;
case 'delete':
  //$sql = "delete users where id=$key"; break;
}

$result = mysqli_query($link,$sql);

if ($method == 'post') {
echo mysqli_insert_id($link);
}

die();
  

Теперь вот мой код, который использует указанный выше API

 <?php
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));

$data = array(
"table" => $request[0],
"FNAME" => $request[1],
"LNAME" => $request[2],
"CNTCT" => $request[3]
);

$url_send ="http://localhost/api.php?   id=".$request[0]."amp;name=".$request[1]."amp;cell=".$request[3];
$str_data = json_encode($data);
$post_elements = array('data'=>$data);


function sendPostData($url){
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query($url_send));
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
curl_close($ch);
//print_r($response);
 return $response;
}

 echo sendPostData($url_send);

?>
  

Ошибка, которую я получаю, заключается в следующем

 **
Notice: Undefined index: PATH_INFO in C:xampphtdocsapi.php on line 5

Notice: Undefined index: id in C:xampphtdocsapi.php on line 9

Notice: Undefined index: name in C:xampphtdocsapi.php on line 10

Notice: Undefined index: cell in C:xampphtdocsapi.php on line 11
21**
  

21 — это идентификатор, который я недавно вставил. Вставка работает, но, похоже, я не могу получить данные из URL.

Кто-нибудь, пожалуйста, помогите. С благодарностью за любые советы, комментарии, даже негативные.

Спасибо.

Комментарии:

1. ПРЕДУПРЕЖДЕНИЕ : при использовании mysqli вы должны использовать параметризованные запросы и bind_param добавлять пользовательские данные в свой запрос. НЕ используйте для этого интерполяцию или конкатенацию строк, поскольку вы создали серьезную ошибку SQL-инъекции . НИКОГДА не помещайте $_POST $_GET данные или непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.

2. Вы не установили $url_send в скрипте API, так что же $method = strtolower($url_send); предполагается делать?

3. Если вы хотите отправить весь URL от вызывающего абонента в API, вам нужно передать его в качестве параметра URL или в полях post.

4. Но почему API должен знать что-либо об URL вызывающего абонента? API должен использоваться любым вызывающим абонентом, он не должен зависеть от URL вызывающего абонента.