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

Wyświetlanie powiadomień

VPS Starter Arubacloud
0 głosów
237 wizyt
pytanie zadane 1 marca 2018 w PHP przez Lukas Hajduga Użytkownik (830 p.)
Mam dosyć duży problem. Mianowicie problem jesy taki że niewiem jak zrobić tak że gdy ktoś wyśle do kogoś wiadomość na mojej stronie to ta wysłana wiadomość znajdzie się u odbiorcy i wyświetli się mu taki kafelek w panelu administracyjnym z informacją od kogo dostał wiadomość i kiedy. Kod piszę w PHP. Mam nadzieję że znajdzie się ktoś kto pomoże mi rozwikłać ten problem. Z góry dziękuje

2 odpowiedzi

+2 głosów
odpowiedź 2 marca 2018 przez Chess Szeryf (76,710 p.)
wybrane 2 marca 2018 przez Lukas Hajduga
 
Najlepsza

1. Piszesz rejestrację i logowanie do serwisu. Mógłbyś takie coś nawet napisać bez logowania się, ale mniejsza z tym.

2. Jeśli ktoś już się zalogował, to musi mieć opcję do wysyłania wiadomości, czyli napisz formularz, do kogo ma być wysłana wiadomość i pole na jej treść.

3. Ktoś np. wysyła wiadomość do John'a o ID=1. Jeśli w bazie nie ma tabeli messages1, to skrypt PHP powinien utworzyć taką tabelę, w przeciwnym razie wiadomość nie powinna zostać wysłana, no bo jak. A gdy taka tabela istnieje, to po prostu dodaje wiadomość do tejże tabeli.

4. Jeżeli ktoś podał poprawny login i hasło to powinna zostać ustawiona zmienna sesyjna o treści, np. "Zalogowano jako John" lub flaga ustawiona na np. true. Następnie, dzięki zalogowaniu się byłaby możliwość wysyłania do kogoś wiadomości. Użytkownik mógłby podać w formularzu dane innego użytkownika jego nick albo ID i po naciśnięciu na submit, wiadomość zostałaby wysłana.

5. Tabele wyglądałyby następująco:

select * from users;
id login password
1 John foo
2 Piter bar
3 xxxx 123
4 yyyy qwerty
select * from messages1;
id message
1 Hello
2 Welcome
select * from messages2;
id message
1 Books
2 Animals

Teraz tak. Jeśli John ma ID=1, to ktoś wysłał do niego wiadomość do tabeli o nazwie messages1, a Piter ma wiadomości w tabeli messages2. W każdym bądź razie tak poglądowo to napisałem, bo to powinno być bardziej rozbudowane, godzina wysłania wiadomości, itd., itp..

Trochę chaotycznie to opisałem w tym punktach.

Ja już coś zacząłem pisać, ale nie dokończyłem, urywek:

<style>
textarea{ 
	background:green;
}
</style>

<body style="background:grey">

<form method="post" action=""> 
	<input type="text" name="to_someone"/>
	<textarea name="message"></textarea>
	<input type="submit" value="send"/>
</form>

<form method="post" action=""> 
	<input type="text" name="login"/>
	<input type="password" name="password"/>
	<input type="submit" name="person" />
</form>

<pre>
<?php 
session_start();

$dbh = new PDO('mysql:host=localhost;dbname=lukas_hajduga','root','');
$show_all = $dbh->query('SELECT * FROM users');

while($users[] = $show_all->fetch(PDO::FETCH_NUM));

for($i=0;$i<count($users)-1;$i++){

	if($users[$i][1]==isset($_POST['login']) && $users[$i][2]==isset($_POST['password']) &&  isset($_POST['person'])){
		
		$_SESSION['flag_loggeds'] = true;
		
	}

}	

if($_SESSION['flag_loggeds'] == true){ 
	$dbh->query("insert into messages{$_POST['to_someone']} values(null,'{$_POST['message']}');");
}

?>

Mam nadzieję, że zrozumiałeś o co chodzi w tym kodzie, mimo iż jest niepełny i w ogóle. Do kodu musisz dopisać parę warunków, przede wszystkim do NOTICE; usunąć: count($users)-1 i dać: count($users) + wcześniej dopisać chyba empty, gdzieś w if. Nie chcę już wypowiadać się na temat tego kodu, popraw go i tyle.

Apropo kodu:

Napisałem go w dużym uproszczeniu. Możliwe, że to spartański sposób. Skrypt rejestracji i/lub logowania powinien mieć bindowanie i wiele innych rzeczy. To jest taka wersja DEMO. To jest tylko kod demonstracyjny, sam musisz napisać to samemu od początku, używając dobrych praktyk (bidnowania), wszelkich zabezpieczeń itd., itp.. Ten kod to taki bardziej skrót myślowy. Chciałem tym kodem przedstawić jak mogłoby to wyglądać, pisane na szybko. To jest tylko kod poglądowy jak już wspomniałem, należałoby go całkowicie przebudować. Na tę chwilę nie musiałbyś używać żadnego asynchronicznego przekaźnika typu websockets czy ajax lub jakichś innych technologi, po F5 (po przeładownaiu) strony ktoś zobaczyłby wiadomość. Chodzi o sam zamysł. Nie sugeruj się tym kodem, to tylko taki pseudo-kod bardziej, pełno w nim błędów (notice'y, itp.).

A tutaj link do strony z opisanym websockets i innymi technologiami:

https://www.html5rocks.com/en/tutorials/eventsource/basics/

+2 głosów
odpowiedź 2 marca 2018 przez mi-20 Stary wyjadacz (13,190 p.)
AJAX, takie powiadomienia można też chyba wykonać za pomocą WebSockets
1
komentarz 2 marca 2018 przez Assasz Nałogowiec (30,460 p.)
Ajax raczej się do tego średnio nadaje, zamiast tego poleciłbym właśnie Websockety albo SSE.

Podobne pytania

0 głosów
2 odpowiedzi 162 wizyt
pytanie zadane 22 lipca 2015 w PHP przez Mateusz Analityk Stary wyjadacz (13,710 p.)
0 głosów
1 odpowiedź 133 wizyt
pytanie zadane 31 sierpnia 2017 w SQL, bazy danych przez ŁukaszD. Użytkownik (540 p.)
0 głosów
1 odpowiedź 259 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...