2013-10-11 4 views
0

У меня очень простая форма, которая отправляет данные на другую страницу, чтобы проверить ее до того, как вставить ее в базу данных. Он отлично работает в MAMP в локальной среде, но на сервере он не будет вставлять какие-либо данные. Кажется, что не нужно отправлять какие-либо данные из-за того, что я удаляю isset проверяет, запускает ли она программу, но вставляет пустое поле в базу данных.Форма отправляет данные локально, но не удаленно

Я не понимаю, почему это не сработает. Безопасность не является проблемой.

HTML

<form method="post" action="input.php"> 
    <tbody> 
    <tr> 
     <td>Nombre</td> 
     <td><input type="text" class="form-control" value="" name="nombre" id="nombre"></td> 
    </tr> 
    <tr> 
     <td>Apellido</td> 
     <td><input type="text" class="form-control" value="" name="apellido" id="apellido"></td> 
    </tr> 
    <tr > 
     <td>Correo</td> 
     <td><input type="text" class="form-control" value="" name="correo" id="correo"></td> 
    </tr> 
    <tr > 
     <td>Telefono</td> 
     <td><input type="text" class="form-control" value="" name="telefono" id="telefono"></td> 
    </tr> 
    <tr> 
     <td>Nivel de interés</td> 
     <td><select name="nivel" id="nivel"><option value="none">Elige uno</option><option value="Licenciatura">Licenciatura</option><option value="Maestria">Maestría</option><option value="Doctorado">Doctorado</option><option value="Curso de ingles">Curso de inglés</option></select></td> 
    </tr> 
    <tr > 
     <td>Universidad</td> 
     <td><input type="text" class="form-control" value="" name="universidad" id="universidad"></td> 
    </tr> 
    <tr > 
     <td>Hoy</td> 
     <td><input type="text" class="form-control" value="<?php echo date("Y-m-d"); ?>" name="fecha" id="fecha" readonly></td> 
    </tr> 
    <tr > 
     <td></td> 
     <td><input class="btn btn-default" type="submit" name="submit" id="submit" value="Guardar"></td> 
    </tr> 
    </tbody> 
</form> 

PHP

if(isset($_POST['submit'])) 
{ 

    $nombre = mysql_real_escape_string(htmlspecialchars($_POST['nombre'])); 
    $apellido = mysql_real_escape_string(htmlspecialchars($_POST['apellido'])); 
    $correo = mysql_real_escape_string(htmlspecialchars($_POST['correo'])); 
    $telefono = mysql_real_escape_string(htmlspecialchars($_POST['telefono'])); 
    $nivel = mysql_real_escape_string(htmlspecialchars($_POST['nivel'])); 
    $universidad = mysql_real_escape_string(htmlspecialchars($_POST['universidad'])); 
    $fecha = mysql_real_escape_string(htmlspecialchars($_POST['fecha'])); 

    if($nombre == '' || $apellido == '' || $correo == '' || $telefono == '' || $nivel == '' || $universidad == '' || $fecha == '') { 
    header('Location: fallo.php'); 
    } else { 

    $db = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
    $data = $db->prepare("INSERT INTO ferias (nombre, apellido, correo, telefono, nivel, universidad, fecha) VALUES (:nombre, :apellido, :correo, :telefono, :nivel, :universidad, :fecha)"); 
    $data->execute(array(
     'nombre' => $nombre, 
     'apellido' => $apellido, 
     'correo' => $correo, 
     'telefono' =>$telefono, 
     'nivel' => $nivel, 
     'universidad' => $universidad, 
     'fecha' => $fecha)); 
    } 
} 
+2

Использовать 'PDO :: quote()' вместо устаревшего (и в вашем случае совершенно не нужно, потому что вы используете подготовленный оператор) 'mysql_real_escape_string()'. – nietonfir

+0

Ваш сайт на сайте probaly содержит сообщения об ошибках. Вам нужно будет посмотреть журналы сервера или поместить печать или другой оператор после «$ data-> execute», чтобы увидеть, что на самом деле происходит. – jeff

+0

Возможно, проблема с версией PHP. Вы уверены, что у вас такая же версия локально и на сервере? – zzxx53

ответ

0

Название вашего заполнителя не совпадает в заявлении выполнения:

$data->execute(array(
    ':nombre' => $nombre, 
    ':apellido' => $apellido, 
    ':correo' => $correo, 
    ':telefono' =>$telefono, 
    ':nivel' => $nivel, 
    ':universidad' => $universidad, 
    ':fecha' => $fecha 
)); 

[править] Обновление его с раствором, мой комментарий:

Используйте PDO :: quote() вместо устаревшего (и в вашем случае полностью не нужно, потому что вы используете подготовленный оператор) mysql_real_escape_string().

+0

Вставка не является проблемой, проблема в том, что никакая информация не отправляется с одной страницы на другую , не пропуская ** isset ** check. Однако ваш оператор insert выглядит более элегантно –

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