Php problemă ip

Am observat ca, daca am functia add asa:
image

functioneaza.

Daca inclocuiesc id cu ip nu mai functioneaza.

Cand este apelata Update (adica atunci cand editez topicul) primesc o eroare (a doua poza). Mesajul Eroarea vine de la poza 3.

image


image

Motivul e simplu, $_POST nu conţine ip-ul. Altă întrebare :slight_smile:

1 Like

Si cum ii atribui lui $_POST ip-ul?

Nu se face asa, dar va functiona:

$_POST["ip"] = $_SERVER["REMOTE_ADDR"] ;
1 Like
public function add($data) {
    $query = $this->connection->prepare(
        "INSERT INTO topics (
        title,
        description,
        id,
        ip
    ) VALUES (
        :title,
        :description,
        :id,
        :ip
    )");

    $data = [
        ':title' => $data['title'],
        ':description' => $data['description'],
        ':id' => $data['id'],
        ':ip' => $_SERVER['REMOTE_ADDR']
    ];

    $query->execute($data);
}
public function update($data) {
    $query = $this->connection->prepare(
        "UPDATE topics SET title = :title,
                            description = :description
                            ip = :ip
                        WHERE
                            id= :id"
    );

    $data = [
        ':id' => $data['id'],
        ':title' => $data['title'],
        ':description' => $data['description'],
        ':ip' => $_SERVER['REMOTE_ADDR']
    ];
    return $query->execute($data);
}
1 Like

Nu cred ca se recomandă o astfel de inconsecvenţă, o parte din date sa vină prin argument, o parte să vină din variabile globale. Dacă vei avea nevoie sa modifici ip-ul, nu va funcţiona.

3 Likes

Nu o sa am nevoie sa modific IP-ul din fericire :slight_smile:

Am rezolvat, multumesc tuturor de ajutor!

1 Like

Hey, am revenit din pacate :frowning:

Acum am o alta problema. Vreau sa incarc toate topic-urile create de un user. Ideea e ca nu merge.

Folosesc urmatoarea functie:

Iar aici este apelata functia:

Nu imi da o eroare sau ceva de genul. Asa arata pagina:

Baga acel $topics in var_dump si vezi ce returneaza

Cine e $data[‘ip’] in acel bindParam ?

e cel de la functia de add si update.

eeee, vezi !
:slight_smile:

null strica tot in orice limbaj

Ai uitat sa pui $data la functie, parametrul.

Incearca sa intelegi cum functioneaza scope-ul in php:
http://php.net/manual/en/language.variables.scope.php

Daca o sa afisezi acel $data[‘ip’] cel mai probabil o sa fie gol. Presupun ca nu l-ai initializat nicaieri, si nici nu e global, si nici nu-l transmiti ca parametru in functie.

1 Like

Adrian si Serghei ti-au aratat cum sa iei ip ul folosind $_Server
foloseste si tu

nu este poate o metoda sigura

Am pus parametrul, dar acum primesc eroare:

Obiectele se acceseaza cu $obj->key.

image

Am încercat și așa, dar tot nu afișează nimic.

  1. sa il pui la bind param
  2. de ce nu folosesti id ul ?

Ai link ul proiectului de unde te inspiri ?
Ziceai ca este pe github