|
You last visited: Today at 00:26
Advertisement
API Session ID mitsenden?
Discussion on API Session ID mitsenden? within the Web Development forum part of the Coders Den category.
02/06/2019, 16:29
|
#1
|
elite*gold: 0
Join Date: Mar 2011
Posts: 422
Received Thanks: 17
|
API Session ID mitsenden?
Hi,
ich habe eine Api wo man etwas eingibt, und dann halt die Personen erscheinen mit den Buchstaben die man eingibt. Wie z.b eine Person-Suche.
Jetzt wollte ich alle Nutzer zeigen außer die man blockiert hat.
Der SQL-Code würde jetzt wie folgt aussehen:
(API.PHP):
PHP Code:
$q = strip_tags($_GET["q"]); $q = filter_var($q, FILTER_SANITIZE_STRING);
if($stmt = $pdo->prepare("SELECT
`user`.`id` AS user_ident, `user`.`username`, `profil_image`.`id` ASS, `profil_image`.`user_id`, `profil_image`.`image`
FROM `user` LEFT JOIN `profil_image` ON `profil_image`.`user_id` = `user`.`id` WHERE NOT EXISTS ( SELECT `blocked_person`.`user_id`,`blocked_person`.`blocked_user_id` FROM `blocked_person` WHERE `blocked_person`.`user_id` = :session_id AND `blocked_person`.`blocked_user_id` = `user`.`id` ) AND `user`.`username` LIKE :q LIMIT 100;")) { $param = ["session_id" => "{$_SESSION['id']}", "q" => "{$q}%"]; ... }
Benutzer schreiben & api ausführen:
(Index.php)
PHP Code:
$(".js-example-basic-multiple").select2({ placeholder: 'Nenne Person/en.', width: '100%', minimumInputLength: 2, ajax: { url: "pages/person_api.php", dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term }; }, processResults: function (data) { return { results: data.records }; }, cache: true }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work templateResult: formatRepo, templateSelection: formatRepoSelection });
function formatRepo (repo) {
var markup = "<div class='select2-result-repository clearfix'>" + "<div class='select2-result-repository__avatar'><img class='select_image_show' src='" + repo.image + "' /></div>" + "<div class='select2-result-repository__meta'>" + "<div class='select2-result-repository__title'>" + repo.username + "</div>";
return markup; }
function formatRepoSelection (repo) { return '<img class="select_image_show_inline" src="'+ repo.image+'">' + '<span class="slct_username_inline">' + repo.username + '</span>'; }
Wie sende ich die SessionID jetzt noch mit?
|
|
|
02/06/2019, 18:10
|
#2
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Mag sein das ich gerade auf dem Schlauch stehe was deine Anforderungen sind.
Wo genau willst du die Session ID (Denke du meinst $_SESSION['id'], was laut der Benamung im Sql eine User ID wäre) mitgeben ?
Im PHP hast du die Id ja eh schon, daher gehe ich mal davon aus das du die im Javascript haben willst (?).
Wenn das der Fall ist solltest du soweit eigentlich schon alles haben, da du im SQL schon die UserId mit auswählst.
Code:
`user`.`id` AS user_ident
Somit solltest du in den Funktionen formatRepo und formatRepoSelection auf die Id mit "rep.user_ident" zugreifen können (Sofern du auch alles im PHP ausgibst was du im SQL auswählst).
Zum debuggen kannst du in den Funktionen auch einfach folgendes nutzen:
|
|
|
02/06/2019, 19:38
|
#3
|
elite*gold: 0
Join Date: Mar 2011
Posts: 422
Received Thanks: 17
|
Quote:
Originally Posted by False
Mag sein das ich gerade auf dem Schlauch stehe was deine Anforderungen sind.
Wo genau willst du die Session ID (Denke du meinst $_SESSION['id'], was laut der Benamung im Sql eine User ID wäre) mitgeben ?
Im PHP hast du die Id ja eh schon, daher gehe ich mal davon aus das du die im Javascript haben willst (?).
Wenn das der Fall ist solltest du soweit eigentlich schon alles haben, da du im SQL schon die UserId mit auswählst.
Code:
`user`.`id` AS user_ident
Somit solltest du in den Funktionen formatRepo und formatRepoSelection auf die Id mit "rep.user_ident" zugreifen können (Sofern du auch alles im PHP ausgibst was du im SQL auswählst).
Zum debuggen kannst du in den Funktionen auch einfach folgendes nutzen:
|
Hast mich richtig verstanden^^.
Ich brauch aber die UserID, welche der User grad besitzt.
User 2 ist eingeloggt. Er hat Person 3 blockiert.
Jetzt muss ich die ID 2 irgendwie zur Api senden sowie, wenn ich den z.b Nutzernamen zur Api sende:
(z.b index.php?q=Nutzername¤tID=2)
So als Beispiel, aber eventuell wenn möglich einen anderen weg Finden, da man in der URL die ID ändern könnte
|
|
|
02/06/2019, 19:42
|
#4
|
elite*gold: 74
Join Date: Aug 2017
Posts: 284
Received Thanks: 151
|
Quote:
Originally Posted by Cc_Cc_Cc
So als Beispiel, aber eventuell wenn möglich einen anderen weg Finden, da man in der URL die ID ändern könnte
|
Einfach statt einer Get- eine Postrequest senden; dann tauchen die Parameter nicht in der URL auf. c:
|
|
|
02/06/2019, 19:50
|
#5
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by Cc_Cc_Cc
Hast mich richtig verstanden^^.
Ich brauch aber die UserID, welche der User grad besitzt.
User 2 ist eingeloggt. Er hat Person 3 blockiert.
Jetzt muss ich die ID 2 irgendwie zur Api senden sowie, wenn ich den z.b Nutzernamen zur Api sende:
(z.b index.php?q=Nutzername¤tID=2)
So als Beispiel, aber eventuell wenn möglich einen anderen weg Finden, da man in der URL die ID ändern könnte
|
In einem SQL oben hast du die ID doch schon aus der Session geholt.
Code:
$param = ["session_id" => "{$_SESSION['id']}", "q" => "{$q}%"];
Also musst du es im Javascript nicht übergeben, wenn ich was übersehe und du musst das dennoch machen...
Dann kannst du beim laden der Seite einfach die Id in einer Javascript Variable speichern
also z.b.
Code:
<script>
let userId = "<?=$_SESSION['id']?>";
</script>
In deiner Javascript Datei kannst du dann ganz normal auf dei Variable zugreifen, kannst es also z.B. so mit an die Api senden.
Code:
data: function (params) {
return {
q: params.term, // search term
currentID: userId
};
},
|
|
|
02/06/2019, 20:01
|
#6
|
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
|
Quote:
Originally Posted by Cc_Cc_Cc
Hi,
ich habe eine Api wo man etwas eingibt, und dann halt die Personen erscheinen mit den Buchstaben die man eingibt. Wie z.b eine Person-Suche.
Jetzt wollte ich alle Nutzer zeigen außer die man blockiert hat.
Der SQL-Code würde jetzt wie folgt aussehen:
(API.PHP):
PHP Code:
$q = strip_tags($_GET["q"]);
$q = filter_var($q, FILTER_SANITIZE_STRING);
if($stmt = $pdo->prepare("SELECT
`user`.`id` AS user_ident,
`user`.`username`,
`profil_image`.`id` ASS,
`profil_image`.`user_id`,
`profil_image`.`image`
FROM `user`
LEFT JOIN `profil_image`
ON `profil_image`.`user_id` = `user`.`id`
WHERE NOT EXISTS (
SELECT `blocked_person`.`user_id`,`blocked_person`.`blocked_user_id` FROM `blocked_person`
WHERE `blocked_person`.`user_id` = :session_id AND `blocked_person`.`blocked_user_id` = `user`.`id`
) AND `user`.`username` LIKE :q LIMIT 100;")) {
$param = ["session_id" => "{$_SESSION['id']}", "q" => "{$q}%"];
...
}
Benutzer schreiben & api ausführen:
(Index.php)
PHP Code:
$(".js-example-basic-multiple").select2({
placeholder: 'Nenne Person/en.',
width: '100%',
minimumInputLength: 2,
ajax: {
url: "pages/person_api.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
};
},
processResults: function (data) {
return {
results: data.records
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
templateResult: formatRepo,
templateSelection: formatRepoSelection
});
function formatRepo (repo) {
var markup = "<div class='select2-result-repository clearfix'>" +
"<div class='select2-result-repository__avatar'><img class='select_image_show' src='" + repo.image + "' /></div>" +
"<div class='select2-result-repository__meta'>" +
"<div class='select2-result-repository__title'>" + repo.username + "</div>";
return markup;
}
function formatRepoSelection (repo) {
return '<img class="select_image_show_inline" src="'+ repo.image+'">' + '<span class="slct_username_inline">' + repo.username + '</span>';
}
Wie sende ich die SessionID jetzt noch mit?
|
If u want your sessionID, u need to send the cookie to the server when sending the request
Code:
ajax: {
url: "pages/person_api.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
},
//send cookie
xhrFields: {
withCredentials: true
}
}
|
|
|
02/06/2019, 20:18
|
#7
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by elmarcia
If u want your sessionID, u need to send the cookie to the server when sending the request
Code:
ajax: {
url: "pages/person_api.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
},
//send cookie
xhrFields: {
withCredentials: true
}
}
|
WithCredentials is only nessesary for cross-site requests, but the url is a relative path (same domain).
|
|
|
 |
Similar Threads
|
GMX Captcha Winhttp mitsenden
08/11/2013 - AutoIt - 4 Replies
Huhu all,
ich arbeite gerade an einem GMX Acc Creator, ich habe die Packete mal mitgeschnitten, allerdings finde ich das Captcha nicht bzw ich weiß auch nicht wo das Captcha mitgesendet wird.
...
|
[Buying] [S] einen der meinen Char mit MEINER HB Session bottet [B] Gebrauch von 1 HB Session
07/07/2013 - World of Warcraft Trading - 1 Replies
Also nochmal: Ich stelle die Honorbuddy Session zur Verfügung und möchte das mein Char bzw mehrere Chars gebottet werden, sei es Leveln oder Pvp. Als Gegenleistung könnt ihr 1 Session nach belieben verwenden! :)
Würde vielleicht auch dafür zahlen, dass jemand den Char hochbottet!:rolleyes:
Greeetz!
|
VK 1x3 Hornorbuddy Session & 1x1 Session
01/11/2013 - World of Warcraft Trading - 2 Replies
Verkaufe 1x3 Sessions
&
Verkaufe 1x1 Session
PM me oder Skype: nex_xt
|
[B] 4 Honorbuddy Lizenzen (2x 1 Session und 2x 3 session) (extrem billig) [S] Paypal
07/31/2012 - World of Warcraft Trading - 4 Replies
#closed
Alle Keys verkauft ^^
|
[B] Honorbuddy 3er Session 25€ und 2 mal 3er Session [S] Paysafecard
02/29/2012 - World of Warcraft Trading - 1 Replies
Ich biete hier ein paar meiner Honorbuddys zum Verkauf an. Und bevor nun irgendwer was drunter postet...wer die Kommentare zur Verhandlung von Blizzard und Bossland gelesen hat, wird gegen jedes Urteil Berufung eingelegt und ein abschliessendes Urteil erst 2013 erwartet. Das heisst bis dahin auf jedenfall ungestört botten.
3er Session 25€
2 mal 3er Session zusammen auf einer E-Mail 50€
Nur mit Paysafecard. Icq: 338801118
|
All times are GMT +2. The time now is 00:26.
|
|