php форма действия php self - PullRequest
23 голосов
/ 28 июля 2011

У меня есть такая форма php.

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">

</form

В действии формы я хочу использовать имя страницы с параметрами. как house.php?p_id=10111. Но $ _SERVER ['PHP_SELF'] выдает только house.php (полный URL моей страницы house.php?p_id=10111 вот так). Пожалуйста, помогите мне решить эту проблему. спасибо.

Ответы [ 7 ]

77 голосов
/ 28 июля 2011

Как насчет того, чтобы оставить его пустым, что с этим не так?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="">

</form>

Кроме того, вы можете опустить атрибут action, и он будет работать как положено.

15 голосов
/ 28 июля 2011

Вы можете оставить действие пустым или использовать этот код:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>">
</form>
8 голосов
/ 28 июля 2011

Если оставить значение действия пустым, форма будет отправлена ​​обратно самому себе.

4 голосов
/ 08 декабря 2013

Вы также можете использовать ярлык эха вместо того, чтобы печатать "эхо бла";как показано ниже:

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>">
2 голосов
/ 18 ноября 2014

Другой (и, на мой взгляд, правильный) метод - это использование константы __FILE__, если вам не нравится полагаться на $_SERVER переменные.

$parts = explode(DIRECTORY_SEPARATOR, __FILE__);
$fileName = end($parts);
echo $fileName;

О магии и предопределенных константах: 1 , 2 .

2 голосов
/ 22 ноября 2013

Это прекрасно. попробуйте это:)

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
/* Html Input Fields */
</form>  
0 голосов
/ 27 мая 2019

Если вы хотите быть в безопасности, используйте это: <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

...