Angular 5 и PHP не могут POST в файл на стороне сервера - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь отправить зашифрованную переменную из angular в php скрипт для некоторых целей тестирования.

Вот скрипт на стороне клиента:

ngOnInit(){
let user = "am";
let key = "pizza";
let enc = crypto.AES.encrypt(user, key);
console.log(enc);
let dec = crypto.AES.decrypt(enc, key);
console.log(dec.toString(crypto.enc.Utf8));

const headerOptions = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
const params = new HttpParams().set('name', enc)
this.http.post('aff.local/test.php', params, {
    headers: headerOptions
}).subscribe(
        res=>{
            console.log(res)
        },
        error=>{
            console.log( );
        }
    )
}

и скрипт test.php:

<?php
error_reporting(E_ALL);
ini_set('log_errors', 0);
ini_set('display_errors', 1);

$host = "localhost";
$db = "dentist";
$user = "root";
$pass = "root";

$conn = new PDO("mysql:host={$host};dbname={$db};", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("SET CHARACTER SET utf8mb4");
$enc = $_POST['name'];
echo $enc;
?>

У меня возникла следующая ошибка в ответе:

POST http://localhost:4200/aff.local/test.php 404 (не найдено)

и во вкладке сети:

Cannot POST /aff.local/test.php

Файл существует в папке виртуального хоста.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Я нашел решение сам.

Если вы используете просто aff.local/test.php, angular будет автоматически воспринимать его как localhost:4200/yourlink. Просто добавьте http://yourlink, и это исправлено.

Итак, решение http://aff.local/test.php, а не aff.local/test.php:

ngOnInit(){
   let user = "am";
   let key = "pizza";
   let enc = crypto.AES.encrypt(user, key);
   console.log(enc);
   let dec = crypto.AES.decrypt(enc, key);
   console.log(dec.toString(crypto.enc.Utf8));

   const headerOptions = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
   const params = new HttpParams().set('name', enc)
   this.http.post('http://aff.local/test.php', params, {
       headers: headerOptions
  }).subscribe(
        res=>{
            console.log(res)
        },
        error=>{
            console.log( );
        }
    )
}
0 голосов
/ 09 мая 2018

попробуйте это.

POST http: // localhost: 4200 / aff.local / test.php 404 (без проблем)

** замените угловой сервер (localhost: 4200) наphp сервера (например: wamp: localhost: 8080 / имя папки / имя файла)

localhost: 8080 указывает каталог www сервера wamp по умолчанию.

...