ввод данных в mysql с помощью формы


недавно опубликовал тот же вопрос, но случается, что он перестал работать! я пытаюсь ввести данные в таблицу в MySql. но я получаю эту ошибку:

 Notice: Undefined variable: username in    H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22

 Notice: Undefined variable: apellido in H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22

 Notice: Undefined variable: email in H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22

 Notice: Undefined variable: telefono in H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22

 Notice: Undefined variable: usuario in H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22

  Notice: Undefined variable: password in H:\SERVER\htdocs\SITIO2\2\content\control_register_user.php on line 22


Success

файл выглядит следующим образом:

Если вы знаете, как это сделать в PHP7?

является то, что я скачал последнюю версию XAMPP и приносит эту версию PHP

это файл, которому поручено вставить все в MySQL.

я также хотел бы реализовать некоторые элементы управления, которые говорят что введенный пользователь уже существует (если он вообще существует!)

я не хочу злоупотреблять вами, но если вы поможете мне с каким-либо контролем для длины password, который попросит ввести какую-то главную фразу, Это будет объяснено.

Большое спасибо заранее!!

Control_register_user.php:

      session_start();

      <?php include_once('header.php'); ?>

      <h1>Control Register Usuario</h1>

    <?php
   define ("MYSQLUSER", "jolunavi");
   define ("MYSQLPASS", "688200");
   define ("HOSTNAME", "localhost");
   define ("MYSQLDB", "msf");
   if ($coneccion = @new mysqli (HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB));

if (isset($_REQUEST['user_nombre']) && isset($_REQUEST['user_apellido']) && isset($_REQUEST['user_email']) && isset($_REQUEST['user_telefono']) && isset($_REQUEST['user_usuario']) && isset($_REQUEST['user_password']) && isset($_REQUEST['user_token']))
{
#Asignar a las variable
$nombre = isset($_REQUEST['user_nombre']) ? $_REQUEST['user_nombre'] : '';
$nombre = isset($_REQUEST['user_apellido']) ? $_REQUEST['user_apellido'] : '';
$nombre = isset($_REQUEST['user_email']) ? $_REQUEST['user_email'] : '';
$nombre = isset($_REQUEST['user_telefono']) ? $_REQUEST['user_telefono'] : '';
$nombre = isset($_REQUEST['user_usuario']) ? $_REQUEST['user_usuario'] : '';
$nombre = isset($_REQUEST['user_password']) ? $_REQUEST['user_password'] : '';
$nombre = isset($_REQUEST['user_token']) ? $_REQUEST['user_token'] : '';
$sql = "INSERT INTO usuarios (user_nombre,user_apellido,user_email,user_telefono,user_usuario,user_password) VALUES ('$username','$apellido','$email','$telefono','$usuario','$password')";
$query = mysqli_query($coneccion, $sql);
if (!$query) {
 echo "Error</br>";
 echo $sql;
 }
else {
 echo "Success";
 }
}
mysqli_close($coneccion);
?>

<?php include_once('footer.php'); ?>

пожалуйста, не могли бы вы помочь мне решить?

вот форма:

   <?php include_once('header.php'); ?>   
   <h1>Registrate</h1>
   <form action="control_register_user.php" method="post">
   <div class="maintform">
   <p class="formulario"><label for="name">Nombre:  </label> <input placeholder="Ejm: Juan" type="text" name="user_nombre" id="user_nombre"  /></p>
   <p class="formulario"><label for="name">Apellido:</label> <input placeholder="Ejm: Gutierrez" type="text" name="user_apellido" id="user_apellido"  /></p>
   <p class="formulario"><label for="name">email:   </label> <input placeholder="Ejm: [email protected]"type="text" name="user_email" id="user_email"  /></p>
   <p class="formulario"><label for="name">telefono:</label> <input placeholder="Ejm: 0931234567"type="text" name="user_telefono" id="user_telefono"  /></p>
   <p class="formulario"><label for="name">Usuario: </label> <input placeholder="Ejm: Pedrito1980"type="text" name="user_usuario" id="user_usuario"  /></p>
   <p class="formulario"><label for="name">Contrase&ntilde;a:</label> <input placeholder="Ejm: **************"type="password" name="user_password" id="user_password"/></p>
   <p class="formulario">
   <input class="ok" type="submit" name="testform" value="Terminado" />
   <input class="no_ok" type="reset" name="testform" value="Restablecer" />
   <input class="cancel" type="button" value="Cancelar" onclick="window.location.href='../index.php';"/></p>
   <br />
   <br />
   <br />
   <?php 
     $salt = 'SomeSalt';
     $token = sha1(mt_rand(1,1000000) . $salt); 
     $_SESSION['token'] = $token;
     ?>
   <input type="hidden" name="user_token" id="user_token" value="<?php echo $token; ?>"/>
   </div>
   </form>
   <?php include_once('footer.php'); ?>

Большое Спасибо!!

 1
Author: jolunavi, 2016-05-30

4 answers

$link = mysqli_connect("localhost", "Root", "MyRootPassword", "MyDbName");

        #Usa esta Verificacion
        if (isset($_POST['username']) && isset($_POST['password']) && isset($_POST['name']) && isset($_POST['email'])) {

            #Asignalas a una variable asi
            $usuario_login =$_POST['username'];
            $usuario_passwd =$_POST['password'];
            $usuario_nombre =$_POST['name'];
            $usuario_email =$_POST['email'];

            $sql = "INSERT INTO members (username, password, name, email) VALUES    ('$usuario_login', '$usuario_passwd', '$usuario_nombre', ' $usuario_email')";

            $query = mysqli_query($link, $sql);
            if (!$query) {
                echo "Error";
            } else {
                echo "Success";
            }
        } else {
            echo "Parametros vacios. Verifique POST del Form";
        }
 0
Author: Christian Gimenez, 2016-05-30 17:21:16

Это не ошибка mysql, это ошибка php, где вы используете $_POST ['username'] ничего не приходит к вам.

Предложения,

1) для отладки используйте метод GET, и вы увидите в адресной строке, что приходит к вам. 2) Используйте $_REQUEST вместо $_POST работает с GET и POST 3) Не используйте прямые значения, потому что вы можете сделать sql injection

Вы можете использовать функцию для извлечения данных из $_RQUEST что-то вроде

function traerParametro( $nombre ){
  if ( array_key_exists( $nombre, $_REQUEST ) )
  {
    return funcionQueEviteSQLInjection( $_REQUEST[ $nombre ] );
  }
  return '';
}
 0
Author: Juan Manuel Doren, 2016-05-30 18:05:54

Я не могу найти вашу ошибку, но я передаю вам код, который я сделал некоторое время назад, это объектно-ориентированный php я думаю, что это проще и эффективнее. Надеюсь, это послужит вам

Класс, отвечающий за управление подключениями к базе данных

Class DB{

private $servidor; 
private $usuario; 
private $password; 
private $bd; 
private $link; 



//Constructor
function __construct(){
    $this->servidor = 'localhost';
    $this->usuario = 'root';
    $this->password = '';
    $this->bd = 'libreria';
    $this->conectar(); /*Al inicializar la clase ya estará conectada*/ 
} 

//Destructor   
function __destruct() {
    if (isset($this->link) && is_resource($this->link)) {
        mysql_close($this->link);
    }
}

/*Realiza la conexión a la base de datos.*/ 
private function conectar(){ 
  $this->link=mysql_connect($this->servidor, $this->usuario, $this->password);
  if (!$this->link){
       die('Error de coneccion' . mysql_error());  
  }
  else{
        mysql_select_db($this->bd,$this->link); 
        mysql_query("set names 'utf8'");
  }
}

Выполняет запрос возвращает результат

private function ExecuteQuery($query){
    $resultado = mysql_query($query,$this->link);
    if ($resultado)
        return $resultado;
    else
        return false;
} 

Выполняет запрос и не возвращает результат

private function ExecuteNonQuery($query){
    if ( (mysql_query($query,$this->link)) == true ){
        return true;
    }
    else{
        return false;
    }
}

Простая вставка с параметрами

public function InsertarLibro($titulo, $paginas,$precio,$foto,$genero,$autor)
{
    $query="INSERT INTO libros(titulo,paginas,precio,foto,idGenero,idAutor) VALUES('$titulo', $paginas,$precio,'$foto',$genero,$autor)";
    $this->ExecuteQuery($query);
    $id = mysql_insert_id();
    return $id;
}

Я надеюсь служить вам

 0
Author: Missael Armenta, 2016-05-30 19:32:44

Ошибка говорит вам, что переменные не определены, и в коде php проблема видна, все значения вы записываете в одну и ту же переменную $nombre

$nombre = isset($_REQUEST['user_nombre']) ? $_REQUEST['user_nombre'] : '';
$nombre = isset($_REQUEST['user_apellido']) ? $_REQUEST['user_apellido'] : '';
$nombre = isset($_REQUEST['user_email']) ? $_REQUEST['user_email'] : '';
$nombre = isset($_REQUEST['user_telefono']) ? $_REQUEST['user_telefono'] : '';
$nombre = isset($_REQUEST['user_usuario']) ? $_REQUEST['user_usuario'] : '';
$nombre = isset($_REQUEST['user_password']) ? $_REQUEST['user_password'] : '';
$nombre = isset($_REQUEST['user_token']) ? $_REQUEST['user_token'] : '';

Вы не определяете другие переменные. С другой стороны, я рекомендую вам, если вы получаете данные по POST, то вы получаете их через $_POST

------------------------------------------------------- EDIT: -------------------------------------------------------

@jolunavi, проблема в том, что вы используете несколько имен переменных для получения данных POST и других имен переменных в VALUES во время вставки.

Если вы используете эти имена переменных:

        $nombre =$_POST['user_nombre'];
        $apellido =$_POST['user_apellido'];
        $email =$_POST['user_email'];
        $telefono =$_POST['user_telefono'];
        $usuario =$_POST['user_usuario'];
        $password =$_POST['user_password'];

Затем вы должны исправить, изменив эту строку:

$sql = "INSERT INTO usuarios (user_nombre,user_apellido,user_email,user_telefono,user_usuario,user_password) VALUES ('$username','$apellido','$email','$telefono','$usuario','$password')";

Для этого:

$sql = "INSERT INTO usuarios (user_nombre,user_apellido,user_email,user_telefono,user_usuario,user_password) VALUES ('$nombre','$apellido','$email','$telefono','$usuario','$password')";

Вы должны очень хорошо проверить имена полей, порядок и избежать троцарирования переменные.

------------------------------------------------------- EDIT 2 ------------------------------------------------------

Спасибо Adres,

Вы были правы, это была та переменная, которая давала проблемы

Исправлено так:

      <?php include_once('header.php'); ?>
      <h1>Control Register Usuario</h1> 
      <?php 
       if (isset($_POST['user_nombre']) && isset($_POST['user_apellido']) && isset($_POST['user_email']) && isset($_POST['user_telefono']) && isset($_POST['user_usuario']) && isset($_POST['user_password']) && isset($_POST['user_token']))
       {      
       # Asigno a una variable asi:
    if (!empty($nombre =$_POST['user_nombre']));
      if (!empty($apellido =$_POST['user_apellido']));
      if (!empty($email =$_POST['user_email']));
      if (!empty($telefono =$_POST['user_telefono']));
      if (!empty($usuario =$_POST['user_usuario']));
      if (!empty($password =$_POST['user_password']));
      if (!empty($password =$_POST['user_token']));

В этом у меня проблемы

Как мне поставить элемент управления?

Вы говорите, что если пользователь уже существует ...это позволит мне изменить имя пользователя или что-то в этом роде

        # creí poder solucionar asi, pero no funciona
        if ($_GET['user_usuario']) == $_POST['user_usuario'])
        {
          echo "usuario ya existente"
         }

(Продолжение)......

    //imprimo las variables para saber si llegan o no
    $nombre =   $_POST['user_nombre'];     echo "nombre: ";   echo $_POST ['user_nombre'];   echo "<br />";
    $apellido = $_POST['user_apellido'];   echo "apellido: "; echo $_POST ['user_apellido']; echo "<br />"; 
    $email =    $_POST['user_email'];      echo "email: ";    echo $_POST ['user_email'];    echo "<br />";
    $telefono = $_POST['user_telefono'];   echo "telefono: "; echo $_POST ['user_telefono']; echo "<br />"; 
    $usuario =  $_POST['user_usuario'];    echo "usuario: ";  echo $_POST ['user_usuario'];  echo "<br />"; 
    $password = $_POST['user_password'];   echo "password: "; echo $_POST ['user_password']; echo "<br />"; 
    $token = $_POST['user_token'];         echo "token: ";    echo $_POST ['user_token'];    echo "<br />";
    echo "Los Archivos se reciben perfectamente. <br />";

    $sql = "INSERT INTO usuarios (user_nombre,user_apellido,user_email,user_telefono,user_usuario,user_password) VALUES ('$nombre','$apellido','$email','$telefono','$usuario','$password')";
      $query = mysqli_query($coneccion, $sql);
       if (!$query) {
       echo "Error</br>";
       echo $sql;
       }
       else {
       echo "Success";
       }
       }
       mysqli_close($coneccion);
       ?>
       <?php include_once('footer.php'); ?>
 0
Author: Andres Rojas Orozco, 2016-11-11 17:26:22