Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Panic0 en 23 Marzo 2022, 00:03 am



Título: Ayuda, servidor web apache y php
Publicado por: Panic0 en 23 Marzo 2022, 00:03 am
Hola, como estan?


Tengo un problema, soy nuevo en php, queria tratar de crear un archivo php el cual haga que cree un Json.Hasta ahi todo bien, dentro de mi IDE funciona (Si lo ejecuto el Json se crea), pero al momento de iniciar un servidor apache y probar el php desde ahi, el archivo json no se genera con nada.


Alguien tiene idea de como arreglar esto?

Dejo el codigo

Código:
<?php
//Variables super globales

  //Esta variable tiene infomracion sobre la peticion http que nos han mandado
 
if ($_SERVER["REQUEST_METHOD"] = "POST"){
  $contact = [
    "name" => $_POST["name"],
    "phone_number" => $_POST["phone_number"],
  ];

 

  $contacts = [];
  $contacts[] = $contact;

  file_put_contents("contacts.json", json_encode($contacts));


  echo($file);
  //header("Location: index.php");
}

?>




<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- Bootstrap -->
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.1.3/darkly/bootstrap.min.css"
    integrity="sha512-ZdxIsDOtKj2Xmr/av3D/uo1g15yxNFjkhrcfLooZV5fW0TT7aF7Z3wY1LOA16h0VgFLwteg14lWqlYUQK3to/w=="
    crossorigin="anonymous"
    referrerpolicy="no-referrer"
  />
  <script
    defer
    src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
    crossorigin="anonymous"
  ></script>

  <!-- Static Content -->
  <link rel="stylesheet" href="./static/css/index.css" />

  <title>Contacts App</title>
</head>
<body>
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="container-fluid">
      <a class="navbar-brand font-weight-bold" href="#">
        <img class="mr-2" src="./static/img/logo.png" />
        ContactsApp
      </a>
      <button
        class="navbar-toggler"
        type="button"
        data-bs-toggle="collapse"
        data-bs-target="#navbarNav"
        aria-controls="navbarNav"
        aria-expanded="false"
        aria-label="Toggle navigation"
      >
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav">
          <li class="nav-item">
            <a class="nav-link" href="index.php">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="add.php">Add Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <main>
    <div class="container pt-5">
      <div class="row justify-content-center">
        <div class="col-md-8">
          <div class="card">
            <div class="card-header">Add New Contact</div>
            <div class="card-body">
              <form method="POST" action="add.php">
                <div class="mb-3 row">
                  <label for="name" class="col-md-4 col-form-label text-md-end">Name</label>
   
                  <div class="col-md-6">
                    <input id="name" type="text" class="form-control" name="name" required autocomplete="name" autofocus>
                  </div>
                </div>
   
                <div class="mb-3 row">
                  <label for="phone_number" class="col-md-4 col-form-label text-md-end">Phone Number</label>
   
                  <div class="col-md-6">
                    <input id="phone_number" type="tel" class="form-control" name="phone_number" required autocomplete="phone_number" autofocus>
                  </div>
                </div>
   
                <div class="mb-3 row">
                  <div class="col-md-6 offset-md-4">
                    <button type="submit" class="btn btn-primary">Submit</button>
                  </div>
                </div>
              </form>
            </div>
          </div>
        </div>
      </div>
    </div>
  </main>
</body>





Gracias!!!


Título: Re: Ayuda, servidor web apache y php
Publicado por: el-brujo en 23 Marzo 2022, 00:13 am
Pues para encontrar cualquier error con php activa la depuración o mira los logs registro de php

Añade:

Código
  1. <?php
  2. ini_set("display_errors", 1);
  3. // Notificar todos los errores de PHP (ver el registro de cambios)
  4. ?>


Título: Re: Ayuda, servidor web apache y php
Publicado por: Panic0 en 23 Marzo 2022, 00:30 am
Pues para encontrar cualquier error con php activa la depuración o mira los logs registro de php

Añade:

Código
  1. <?php
  2. ini_set("display_errors", 1);
  3. // Notificar todos los errores de PHP (ver el registro de cambios)
  4. ?>


Gracias!!!

Encontre el codigo de error
Código:
Warning: file_put_contents(contacts.json): Failed to open stream: Permiso denegado in /opt/lampp/htdocs/contacts-app/add.php on line 23
/code]


Ahora tengo que buscar la forma de tener permisos, creo.


Título: Re: Ayuda, servidor web apache y php
Publicado por: Danielㅤ en 23 Marzo 2022, 00:48 am
Hola, a esta línea de tu código, quítale la coma del final:

Código
  1.    "phone_number" => $_POST["phone_number"],

quedando así:

Código
  1.    "phone_number" => $_POST["phone_number"]

prueba de nuevo y nos comentas.


Saludos


Título: Re: Ayuda, servidor web apache y php
Publicado por: #!drvy en 23 Marzo 2022, 10:59 am
El error te dice que no tienes permisos para escribir sobre ese fichero.

Asegúrate de que tu script tiene los permisos correctos y que la carpeta donde intentas escribirlo pertenece al mismo dueño o grupo que el script.

Además en esta linea

Código:
if ($_SERVER["REQUEST_METHOD"] = "POST"){

NO estas comparado sino que estas asignando, esa condicion siempre va a ser true. Lo correcto seria:

Código
  1. if ($_SERVER["REQUEST_METHOD"] === "POST"){




@Daniel, PHP no tiene problemas con esas cosas. La última coma de un array es totalmente opcional.

https://sandbox.onlinephpfunctions.com?s=s7EvyCjg5eLlUkksKkqsVLBVANMavFwKQGCoA6GNoLQxkNa0Binn5SpLLIpPKc0t0IDo1LQGAA%2C%2C&v=7.4.28

https://www.php.net/manual/en/function.array.php
Having a trailing comma after the last defined array entry, while unusual, is a valid syntax.

Saludos