Добавить действие формы

Я пытаюсь сделать, когда я отправляю, чтобы перейти снова на index.php? Страницу = серверов, но когда я отправляю форму перенаправления является index.php? но в действии index.php? страница = серверы, как я могу это исправить?

<form class="form-horizontal" action="index.php?page=servers">
<fieldset>
<legend>Add server</legend>
<div class="form-group">
<label for="inputEmail" class="col-lg-2 control-label">IP</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="ipserver" placeholder="IP Adress">
</div>
</div>
<div class="form-group">
<label for="inputPassword" class="col-lg-2 control-label">Port</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="portserver" placeholder="Port">
</div>
</div>
<div class="form-group">
<label for="select" class="col-lg-2 control-label">Type</label>
<div class="col-lg-10">
<select class="form-control" id="select">
<option>Half-Life (Counter-Stricke)</option>
<option>Minecraft</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button class="btn btn-default">Cancel</button>
<button type="submit" id="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</fieldset>
</form>

И php

if(!empty($_POST['submit'])){
$ip_server = $_POST['ipserver'];
$port_server = $_POST['portserver'];
if ($ip_server == NULL || $port_server == NULL){
echo 'Моля попълнете всички полета.';
}else{
$type = "halflife";
$zone = 0;
$disabled = 0;
$status = 1;
$sql = ("INSERT INTO `lgsl` (type, ip, c_port, q_port, zone, disabled, status) VALUES ('$type', '$ip_server', '$port_server', '$port_server', '$zone', '$disabled', '$status')");
$result = mysql_query($sql);
echo 'Сървъра е успешно добавен!';
}
}

1

Решение

Какой метод HTTP используется по умолчанию для формы?

Вам нужно добавить атрибут к тегу формы, чтобы превратить его в POST на основе вашего кода.

<form method="POST">

$ _POST против $ _SERVER [‘REQUEST_METHOD’] == ‘POST’

Чтобы подтвердить запрос, используйте:

if( $_SERVER["REQUEST_METHOD"] == "POST" ) // or GET, if appropriate

Если вы намеревались использовать GET, вы могли бы добавить скрытый элемент с именем «страница» и значением «серверы».

 <input type="hidden" name="page" value="servers" />
1

Другие решения

if(isset($_POST['submit'])){
$ip_server = mysql_real_escape_string($_POST['ipserver']);
$port_server = mysql_real_escape_string($_POST['portserver']);
if ($ip_server == NULL || $port_server == NULL){
echo 'Моля попълнете всички полета.';
} else {
$type = "halflife";
$zone = 0;
$disabled = 0;
$status = 1;
$sql = "INSERT INTO `lgsl` (type, ip, c_port, q_port, zone, disabled, status) VALUES ('$type', '$ip_server', '$port_server', '$port_server', '$zone', '$disabled', '$status')";
$result = mysql_query($sql);
echo 'Сървъра е успешно добавен!';
}
}

Я добавил mysql_real_escape_string для предотвращения внедрения кода.

Также используйте method="post" в вашей форме тег, как это <form method="post">

0

У вас может быть желаемое значение действия, как показано в следующем HTML-коде:

<form name="myform" action="testform.php?query=string" method="POST">
<input name="data" type="text">
<input type="submit">
</form>

То, как ваша форма в настоящее время настроена, по умолчанию приводит к GET-запросу. Тем не менее, ваши тесты PHP для формы, представленной как запрос POST! Если вы действительно намереваетесь отправить форму как запрос POST, вы должны указать это в атрибуте действия как action="POST", Затем измените тест отправленной формы, чтобы проверить, имеет ли значение POST значение, как показано ниже:

<?php
if (isset($_POST) && $_POST != null){
echo ( htmlentities( $_SERVER['QUERY_STRING'] ) );  // adding more security
}
?>

Примечание: когда метод POST, часть ?query=string не отражает переменную GET, а скорее QUERY_STRING. Когда эта форма отправлена, она перенаправляет на testform.php?query=string,

Кстати, удобная функция для разбора результирующей строки запроса — parse_str, и вы можете использовать ее для создания переменной или ассоциативного массива, который содержит значение «string», следующим образом:

<?php
$qs = htmlentities( $_SERVER['QUERY_STRING'] );
$str = substr( $qs, 1 ); // remove the '?'

// array option
parse_str( $str ,$arr);
echo $arr['query'],"\n";

// variable option
parse_str( $str );
echo $query;

Увидеть http://3v4l.org/DC27Y

0
По вопросам рекламы [email protected]