PHP include () Проблема - PullRequest
       2

PHP include () Проблема

0 голосов
/ 26 октября 2011

Я пытаюсь выполнить некоторую простую проверку формы, убедившись, что введенное не превышает определенного предела символов, но, похоже, не может заставить его работать.Когда я пытаюсь запустить этот код:

$str = "?id=";
$id = $_POST['ID'];

if (strlen($_POST['fname']) > 1) {
    $message = "Character cannot be more than...";
    include 'edit.php' . $str . $id;
    exit();
}

я получаю эту ошибку:

Warning: include(edit.php?id=97) [function.include]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/update.php on line 15

Warning: include() [function.include]: Failed opening 'edit.php?id=97' for inclusion (include_path='.:/Applications/MAMP/bin/php/php5.3.6/lib/php') in /Applications/MAMP/htdocs/update.php on line 15

Из того, что я читал, он на самом деле ищет файл edit.php?id=97 каквместо поиска edit.php и добавления идентификатора.Я понятия не имею, что делать.Какие-либо предложения?Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 26 октября 2011

Включаемый файл - это просто файл, это не HTTP-запрос, поэтому параметр GET не имеет смысла в этом контексте.Вы можете получить доступ к $id и $str в том числе, если вам нужно.

Вы можете включить по HTTP (начните строку с действительного протокола), если ваш php.ini имеетон включен (allow_url_include, по умолчанию отключен), но я бы не рекомендовал его.

2 голосов
/ 26 октября 2011

Вы не можете include локальный файл с параметрами HTTP-запроса.

В предположении, я бы сказал, что вы хотите сделать перенаправление заголовка

header(sprintf('Location: http://your-domain.com/edit.php?id=%d', $id));
exit;

Кроме того, я считаю, что при работе с формами гораздо проще следовать этому рабочему процессу:

  1. ПОЛУЧИТЬ страницу формы. Форма действия на той же странице
  2. Данные формы POST. Определить метод POST и проверить результаты
  3. Если допустимо, перенаправить на страницу успеха. Если нет, переотобразите форму с уведомлениями / флагами
1 голос
/ 26 октября 2011

Вы не можете включить файл так, как пытаетесь.Попробуйте удалить часть ?id=x, и она все равно будет работать.

0 голосов
/ 26 октября 2011

В вашем включенном файле:

include('edit.php');

Внутри edit.php:

$id = $_POST['id'];
0 голосов
/ 26 октября 2011

Если вы действительно хотите сделать это таким образом ...

if (strlen($_POST['fname']) > 1) {
    $message = "Character cannot be more than...";
    echo file_get_contents('http://example.com/edit.php'.$str.$id.'&message='.$message);
    exit();
}

, но попробуйте это так ...

if (strlen($_POST['fname']) > 1) {
    $message = "Character cannot be more than...";
    include_once 'edit.php';
    exit();
}

или скажите нам, что вы действительно хотите сделать...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...