AJAX érték küldés PHP-be
Az lenne a kérdésem, hogy van egy változom, aminek az értékét át kellene küldjem AJAXból egy másik oldalra, PHP-be.
Ez az AJAX kód:És ez itt a PHP kód:És az oldal ezt a hiba kódot adja vissza: Notice: Undefined variable: kulcs3 in C:\xampp\htdocs\web\Forum\valaszbeker.php on line 36.
■ Ez az AJAX kód:
<script type="text/javascript">
function placsika(clicked_id){
var idkerd = clicked_id.id;
idkerd = Number.parseInt(idkerd);
$.ajax({
type: 'POST',
url: "http://localhost/web/Forum/valaszbeker.php",
data: ({
kulcs12: idkerd
}),
success: function(data)
{
return data;
}
});
}
</script>
<?php
require_once('C:\xampp\htdocs\web\bejelentkezes\connection.php');
session_start();
if(isset($_POST['message']))
{
$message = $_POST['message'];
$_SESSION['message1'] = $message;
$elonevv = $_SESSION['elonevecskekk'];
$utonevv = $_SESSION['utonevecskekk'];
if(isset($_POST["kulcs12"])){
$kulcs3 = $_POST["kulcs12"];
}
$sqlv1 = "INSERT INTO valaszok VALUES('', '$kulcs3', '$elonevv', '$utonevv', '$message')";
$result211 = mysqli_query($conn, $sqlv1);
}
?>
AJAX érték, AJAX kód
Az Ajax egy kommunikációs technológia, se értéke nincs, se nem programnyelv.
Tehát valamilyen értéket szeretnél ajax-szal elküldeni egy fogadó részére, valamint a beküldést javascript kóddal oldod meg.
A hibaüzenetben a 36. sor szerepel, a példakód csak 16, így nehéz pont eltalálni a hiba okát.
A tippem: false értéke van az itt 10. sornak, és előtte nem adsz alapértelmezett értéket a $kulcs3 változónak, ezért undefined (= nem definiált).
Tehát a $_POST['message'] létezett, de a $_POST["kulcs12"] nem.
Ez azért is érdekes, mert a javascript kódban csak a kulcs12 -t küldöd be, és message - et nem...
Ezen kívül - bár ez nem volt kérdés - mindenféle ellenőrzés, szűrés és escape-elés(!!!) nélkül szúrsz be adatot az adatbázisba. Ezt véletlenül se élesítsd ki, mert 5 perc alatt feltörik.
Amíg alapvető biztonsági ismeret-hiányok vannak, addig nem ajánlott felhasználókezeléssel foglalkozni (otthon xampp vagy más, otthoni környezetben persze lehet, de élesben nem).
Köszönöm, még egy kérdés
Amit nem látunk, az nincs
Hol "fentebb"? Aminek nem látjuk a kódját, az nincs is. :) Láthatatlan kódban az esetleges hiba is láthatatlan.
Fenntartom a korábbi állításom a PHP feldolgozóra: "Tehát a $_POST['message'] létezett, de a $_POST["kulcs12"] nem."
Ezt igazolni látszik, hogy "A messaget fenneb küldöm el", szerintem a PHP Notice abból a másik request-ből ered.
FONTOS tudni, hogy hogyan műxik a HTTP protokoll, ennek kicsit olvass utána. (Itt a legfontosabb: 1 request - 1 response.)
Úgy tűnik (de még nem láttuk), hogy "fentebb" egy különálló (szintén Ajax?) request küldi be a message-et, itt pedig külön a kulcs12.
Ez azért nem szerencsés, mert akkor különálló feldolgozó kell hozzá. Ha backend (BE) oldalon egyszerre van szükség a két adatra, akkor azt egy request-ben egyszerre kell beküldeni.
Mivel az elején vagy és tanulás a cél, azt javaslom, hogy oldd meg először ajax nélkül, "sima" form post-tal, itt tapasztald ki, hogy mikor mi történik, írd meg úgy, hogy bárki bármit hackel a frontenden (FE), akármilyen kamu post megy be, a BE mindig helyesen teszi a dolgát, és még megfelelő üzeneteket is kiÍr, hogy sikeres a művelet, vagy ha nem, miért nem.
Érdemes kipróbálni azt is, mi van ha disabled egy input, vagy kitörölték a formból, stb stb.
Ha ez meg van, utána lehet elkezdeni ajaxolni, itt viszont érdemes a BE-t úgy csinálni, hogy ha csak xhr request-et akarsz fogadni, akkor zárja ki azokat, ami nem az..