2014-12-02 2 views
1

Я пытаюсь сделать, когда я отправляюсь на страницу index.php? Page = server, но когда я отправляю форму redirect, это index.php? но в действии есть index.php? page = servers, как я могу это исправить?Добавить форму action

<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 'Сървъра е успешно добавен!'; 
} 
} 
+3

** предупреждение ** ваш код чрезвычайно уязвим для SQL-инъекций! –

+0

Я знаю, что я исправлю это, но сначала хочу, чтобы код o работал :). –

+0

У вас здесь нет кода, который должен привести вас к index.php ?. Можете ли вы предоставить содержимое вашего файла .htaccess? –

ответ

1

What is the default form HTTP method?

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

<form method="POST"> 

$_POST vs. $_SERVER['REQUEST_METHOD'] == 'POST'

Для подтверждения запроса, используйте:

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

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

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

Мой плохой я забыл об этом, но когда я отправляю, я не вижу свое эхо, если входной сигнал равен нулю? –

+0

Используйте метод запроса сервера для его проверки. Я отредактировал ответ. – phpmeh

+0

Спасибо, это исправить мою проблему :) –

0
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, и вы можете использовать его, чтобы создать переменную или ассоциативный массив, который содержит «строку» значение следующим образом:

<?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

Смежные вопросы