• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Ajax nie wykonuje funkcji

Object Storage Arubacloud
0 głosów
130 wizyt
pytanie zadane 13 maja 2022 w PHP przez AnimaVillis Stary wyjadacz (11,350 p.)
zamknięte 15 maja 2022 przez AnimaVillis

Cześć!

Jest sobie ajax, php, mysql, ale po przeniesieniu na cyberfolks przestał działać.

Funkcję wywołuję tak:

weryfikacja.akceptacja("'.$w['hash'].'")

Następnie kod weryfikacje
 

$(document).ready(function () {

    var table = $("#Tweryfikacje").DataTable({
        dom: "lBfrtip",
        buttons: ["copy", "excel", "pdf", "print", "colvis"],
        language: {
            url: "js/Polish.json",
        },
        lengthChange: true,
    });
    setTimeout(function () {
        korektaJezyka(); $(".hidden").css("visibility", "visible");
    }, 100);
    
 });

Oraz akceptacja:

function akceptacja()
{
    global $db;
    if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    $hash = $_POST['hash'];
    $o = $db->query("select * from ogloszenia where hash='" . $hash . "'")->row;
    $user = $db->query("select email,powiadomienia from uzytkownicy where id='" . $o['userid'] . "'")->row;
    $foto = pobierztmp($hash);
    array_map('unlink', glob(IMGORGPATH . $hash . "_*.jpg"));
    foreach ($foto as $f) {
        rename(IMGTMPPATH . $f, IMGORGPATH . $f);
    }
    przywroc_foto_org($hash, true);
    $db->query("update ogloszenia set weryfikacja='1'where hash='" . $hash . "'");
    if ($db->countAffected() == 0) {
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    ulogi("Akceptacja ogłoszenia: " . $hash, $o['userid'], $o['id']);

    if ($o['userid'] !== "1" && $user['powiadomienia'] == 1) {
        $dane['email'] = $user['email'];
        $dane['od'] = MAILBOX_LOGIN;
        $dane['temat'] = "Twoje ogłoszenie zostało zaakceptowane";
        $dane['tresc'] = "Ogłoszenie " . $hash . " zostało zweryfikowane i jest już widoczne.";
        $dane['nazwaOd'] = "Administrator - " . MAILBOX_NAZWA;
        $adm = new mailer;
        $adm->dane = $dane;
        $adm->sendMail();
    }

    die('widget.info("Zrobione","Ogłoszenie zaakceptowane");location.reload();');
}

I mam jeszcze php:

function akceptuj($hash)
{
    global $blad, $o, $imageformats, $videoformats;
    $tmpdir = IMGTMPPATH;
    $r = array();
    $zdjecia = array();
    $dh = @opendir($tmpdir);
    if ($dh) {
        while (($fname = readdir($dh)) !== false) {
            if (strstr($fname, $hash)) {
                array_push($r, $fname);
            }
        }
        closedir($dh);
    }
    sort($r);
    if (!empty($r))
        usunfotoorg($hash);
    $zdjecia = $r;

    foreach ($r as $plik) {
        $roz = explode('.', $plik);
        $roz = end($roz);
        if (in_array($roz, $videoformats)) {
            if (!copy(IMGTMPPATH . $plik, IMGORGPATH . $plik))
                logi("Blad kopiowania", IMGTMPPATH . $plik . " - " . IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik)) {
                $blad .= "Brak pliku video - " . IMGORGPATH . $plik . ";";
                continue;
            }
            rename(IMGTMPPATH . $plik, VIDEOSRCPATH . $plik);
            if (!file_exists(VIDEOSRCPATH . $plik))
                $blad .= "Brak pliku video - " . VIDEOSRCPATH . $plik . ";";
            continue;
        }

        if (in_array($roz, $imageformats)) {

            if (!copy(IMGTMPPATH . $plik, IMGORGPATH . $plik))
                logi("Blad kopiowania", IMGTMPPATH . $plik . " - " . IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik)) {
                $blad .= "Brak pliku foto - " . IMGORGPATH . $plik . ";";
                continue;
            }
            skaluj($tmpdir, $plik, 450, 600);
            if (!file_exists(IMGSRCPATH450x600 . $plik)) {
                $blad .= "Brak pliku foto - " . IMGSRCPATH450x600 . $plik . ";";
                continue;
            }
            znakwodny(IMGSRCPATH450x600 . $plik);
            skaluj(IMGSRCPATH450x600, $plik, 300, 400);
            if (!file_exists(IMGSRCPATH300x400 . $plik))
                $blad .= "Brak pliku foto - " . IMGSRCPATH300x400 . $plik . ";";
            skalujdoh100(IMGSRCPATH450x600, $plik);
            if (!file_exists(IMGSRCPATH75x100 . $plik))
                $blad .= "Brak pliku foto - " . IMGSRCPATH75x100 . $plik . ";";
        } else {
            $blad .= "Nierozpoznany plik - " . $plik . ";";
        }
    }

    if ($blad == "")
        foreach ($r as $plik) {
            copy($tmpdir . $plik, IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik))
                $blad .= "Brak pliku foto - " . IMGORGPATH . $plik . ";";
        }

    if ($blad == "") {
        foreach ($r as $plik){
         if(file_exists($tmpdir . $plik))
            unlink($tmpdir . $plik);
        }

        if (mysql_polecenie("update ogloszenia set weryfikacja='1',data_weryfikacji=now(),status=if(status='0','1',status) where hash='" . $hash . "'")) {
            ulogi("Akceptacja ogłoszenia: " . $hash, $o['userid'], $o['id']);
            if ($o['userid'] !== "1")
                wiadomosc($o['userid'], "Twoje ogłoszenie zostało zaakceptowane", "Ogłoszenie " . $hash . " zostało zweryfikowane i jest już widoczne.");
            return;
        }
        logi("Błąd mysql przy akceptacji ogloszenia: " . $hash, "akceptacja.php");
        return "Błąd mysql";
    } else {
        logi("Błąd przy akceptacji ogloszenia: " . $hash . " - " . $blad, "akceptacja.php");
        return $blad;
    }
}

Ogólnie całość wygląda jakby ajaxa nie wykonywało, hash przekazuje normalnie.

Niestety, ale nie działa a ja zgłupiałem.
Jakieś podpowiedzi gdzie szukać? Consola błędów nie wyrzuca...

komentarz zamknięcia: Kolega VBService wyczerpał temat.
komentarz 13 maja 2022 przez ScriptyChris Mędrzec (190,190 p.)
Sprawdziłeś w zakładce Network devtoolsów przeglądarki, czy może request wisi na statusie "pending", czy ostatecznie response przychodzi - jeśli tak, to z jakim kodem statusu HTTP?

https://developer.chrome.com/docs/devtools/network/#load

https://developer.chrome.com/docs/devtools/network/reference/#headers
komentarz 14 maja 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
edycja 14 maja 2022 przez AnimaVillis

Nie mogę udzielić normalnej odpowiedzi w komentarzu.

 

Okej, mam odpowiedź, że

if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia 1")');
    }

Tylko dlaczego?

komentarz 14 maja 2022 przez VBService Ekspert (253,100 p.)

A co to jest?

Sprawdzasz czy istnieje zmienna $_POST['hash']

jeżeli istnieje kończysz działanie skryptu - die(...)

    if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    $hash = $_POST['hash'];

linie poniżej próbujesz pobrać wartość ze zmiennej $_POST['hash']

nie powinno być czasem

if (! isset($_POST['hash'])) { ...

 

1
komentarz 15 maja 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
ehh, wiedziałem, że to głupota jakaś musi być!

Dzięki wielkie!

1 odpowiedź

0 głosów
odpowiedź 14 maja 2022 przez rafal.budzis Szeryf (85,260 p.)

Dodaj w pierwszych linijkach kodu PHP 

error_reporting(E_ALL);
ini_set('display_errors', 1);

Może ustawiłeś złą wersję PHP? Może też gdzieś odwołujesz się do klucza w $_SERVER który u CF nie istnieje. CF nie używa Apache więc $_SERVER się nieco rożni. 

Gdy już ustawisz to zobacz w zakładce network jaki masz błąd w PHP

komentarz 14 maja 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
edycja 14 maja 2022 przez AnimaVillis

Mam odpowiedź taką, że brak id.
Tym bardziej, że sam podglądam w HTMLu daje wartość:
 

weryfikacja.akceptacja("3267287656652");

Tylko dlaczego?
komentarz 14 maja 2022 przez rafal.budzis Szeryf (85,260 p.)
Wklej dokładny błąd z PHP skoro w innym srodowisku działa trzeba znaleźć różnice.

Podobne pytania

0 głosów
2 odpowiedzi 208 wizyt
0 głosów
1 odpowiedź 148 wizyt
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 23 lutego 2020 w JavaScript przez Bartx Bywalec (2,120 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...