Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

18 Stron V   1 2 3 > » 

vokiel
Napisane: 29.12.2023, 01:07:24





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Wykrzyknik to zaprzeczenie == nie prawda że ...

Skoro kod wchodzi Ci do wewnątrz ifa to znaczy, że $_SESSION['logged'] jest pusty/nieustawiony/false. Może nie startujesz sesji przed sprawdzeniem, może masz tylko ustawioną zmienną ale bez wartości, przyczyn może być wiele.
  Forum: Przedszkole · Podgląd postu: #1262203 · Odpowiedzi: 3 · Wyświetleń: 336

vokiel
Napisane: 25.10.2023, 13:05:42





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Odnośnie zmian w sortowaniu:

https://bugs.php.net/bug.php?id=69158

W PHP od 7 przekazywane parametry są w innej kolejności niż w PHP 5 i poniżej. Także Twój kod powinien porównywać te parametry bez względu na ich kolejność.

Odnośnie Twojego pierwszego kodu to ma błąd - drugie porównanie porównuje $e2 do zera bez modulo

  1. <?php
  2.  
  3. $tab1 = [5, 7, 3, 1, 8, 2, 0, 4, 9, 6];
  4.  
  5. usort($tab1, function($e1, $e2)
  6. {
  7. echo $e1.' | '.$e2.PHP_EOL;
  8.  
  9. if ($e1 % 2 == 0 && $e2 % 2 != 0) {
  10. return -1;
  11. } elseif ($e1 % 2 != 0 && $e2 % 2 == 0) {
  12. return 1;
  13. } else {
  14. return $e2 - $e1;
  15. }
  16. }
  17. );
  18. print_r($tab1);


Kod
Output for 5.6.40 | released 2019-01-10 | took 18 ms, 16.62 MiB
    8 | 7
    6 | 8
    8 | 3
    9 | 8
    4 | 8
    8 | 1
    0 | 8
    8 | 5
    2 | 8
    6 | 2
    6 | 4
    0 | 6
    2 | 0
    4 | 2
    3 | 1
    3 | 5
    7 | 3
    9 | 3
    5 | 3
    9 | 5
    7 | 9
    5 | 7
    Array
    (
        [0] => 0
        [1] => 2
        [2] => 4
        [3] => 6
        [4] => 8
        [5] => 1
        [6] => 3
        [7] => 5
        [8] => 7
        [9] => 9
    )


Kod
Output for 7.4.33 | released 2022-11-03 | took 23 ms, 14.25 MiB
    5 | 7
    7 | 3
    5 | 3
    7 | 1
    5 | 1
    3 | 1
    7 | 8
    5 | 8
    3 | 8
    1 | 8
    7 | 2
    5 | 2
    3 | 2
    1 | 2
    8 | 2
    7 | 0
    3 | 0
    8 | 0
    0 | 2
    7 | 4
    3 | 4
    8 | 4
    0 | 4
    2 | 4
    7 | 9
    9 | 6
    5 | 6
    1 | 6
    4 | 6
    8 | 6
    Array
    (
        [0] => 0
        [1] => 2
        [2] => 4
        [3] => 6
        [4] => 8
        [5] => 1
        [6] => 3
        [7] => 5
        [8] => 7
        [9] => 9
    )
  Forum: Przedszkole · Podgląd postu: #1262022 · Odpowiedzi: 2 · Wyświetleń: 463

vokiel
Napisane: 14.12.2022, 22:56:48





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Cytat(sadistic_son @ 14.12.2022, 22:12:01 ) *
Ok, dzięki. Ale to po co wtedy autor tego kodu jeszcze rzutuje typ int na $number1 i $number2? Przecież nie ma możliwości żeby wyszło coś innego niż int.


W tym kodzie tak, ale generalnie wymuszenie typów wejściowych nie implikują typu wyściowego. Zawsze może w metodzie coś zmodyfikować typ zmiennych.

  1. public static function addition(int $number2, int $number3): int
  2. {
  3. $number2 = $this->countNumber($number2); // jeśli tutaj wróci float to wynik też będzie float
  4. return $number2 + $number3;
  5. }

  Forum: Przedszkole · Podgląd postu: #1260336 · Odpowiedzi: 6 · Wyświetleń: 271

vokiel
Napisane: 16.06.2022, 11:02:53





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Użyj GROUP BY na `uczen`.`id_ucznia` plus GROUP_CONCAT na kolumnę z ocenami.
  Forum: Bazy danych · Podgląd postu: #1259304 · Odpowiedzi: 1 · Wyświetleń: 1 612

vokiel
Napisane: 24.04.2022, 14:08:35





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Zwykle CSSy się buduje z jakiś SASS/SCS, buildery oparte są o JS, mają zwykle taki ficzer wbudowany albo łatwy do dołączenia.

Jeśli nie korzystasz z czegoś takiego, to tak czy inaczej w PHP jest to łatwe do osiągnięcia, bo przecież są gotowe funkcje jak https://www.php.net/manual/en/function.hash-file.php czy też https://www.php.net/manual/en/function.sha1-file.php

Cytat
I pytanie, generować nowe pliki CSS przez PHP czy da się to zrobić na poziomie revite rule w htaccess


Generalnie to odwrotnie - masz zmienione pliki CSS, zmieniasz ich nazwę i podmieniasz ją w plikach HTML.
  Forum: Przedszkole · Podgląd postu: #1258836 · Odpowiedzi: 13 · Wyświetleń: 636

vokiel
Napisane: 22.04.2022, 21:00:56





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Rozmiar to nie jest dobry wyznacznik. Możesz dodać 100 znaków i 100 innych usunąć i rozmiar zostanie ten sam, a zawartość się będzie różnić. Hash z zawartości jest najpewniejszy.
  Forum: Przedszkole · Podgląd postu: #1258831 · Odpowiedzi: 13 · Wyświetleń: 636

vokiel
Napisane: 20.04.2022, 20:20:02





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

To tak, żeby cache miał sens, to nazwa zasobu musi być unikalna (w nazwie pliku hash z zawartości). Wtedy można cache ustawić na bardzo długi czas i jeśli zmieni się zawartość, hash się przeliczy i będzie nowy link.
Czyli de facto musisz tu mieć jakiś builder wpleciony. Krok po kroku to wygląda tak:
1. Budujesz całą stronę (html, js, css).
2. Dla assetów (js, css) wyliczasz ich hashe z zawartości pliku.
3. Zmieniasz nazwę (np z main.css, main.js na odpowiedniki z hashem w nazwie => main-a0a9af.css main-8a98asdf.js).
4. We wszystkich plikach HTML podmieniasz linki z main.css na main-a0a9af.css i main.js na main-8a98asdf.js

Cache plików HTML pownien być krótki, tak aby przeglądarka dość często pobierała samą stronę, natomiast assety można w takim przypadku wrzucać do cache nawet np na rok, albo w sumie też do nieskończoności ;-) Jeśli nastąpią zmiany w treści, wygeneruje się nowy hash, nowa nazwa pliku => przeglądarka pobierze nowe pliki.

CDN może serwować nagłówki z serwera źródła. Cache na poziomie serwera www można zrobić na kilka sposobów, w zależności od wersji, dostępnych modułów.
Przykłady dla Apache:

[APACHE] pobierz, plaintext
  1. <IfModule mod_headers.c>
  2. # Images - 1 year
  3. <filesMatch "\.(jpg|jpeg|png|gif|ico|svg)$">
  4. Header set Cache-Control "max-age=31536000, public"
  5. Header unset Set-Cookie
  6. </filesMatch>
  7.  
  8. # Fonts - 1 year
  9. <filesMatch "\.(ttf|otf|eot|woff|woff2)$">
  10. Header set Cache-Control "max-age=31536000, public"
  11. Header unset Set-Cookie
  12. </filesMatch>
  13.  
  14. # JS/CSS - 1 year
  15. <filesMatch "\.(css|js)$">
  16. Header set Cache-Control "max-age=31536000, public"
  17. Header unset Set-Cookie
  18. </filesMatch>
  19.  
  20. # Media files - 1 month
  21. <FilesMatch "\.(txt|pdf|flv|swf|mp3|mp4)$">
  22. Header set Cache-Control "max-age=2628000, public, must-revalidate"
  23. Header unset Set-Cookie
  24.  
  25. # Create the ETag to check resource hash every time
  26. FileETag MTime Size
  27. </FilesMatch>
  28.  
  29. # XML - 1 hour
  30. <FilesMatch "\.xml$">
  31. Header set Cache-Control "max-age=3600, public, must-revalidate, no-cache"
  32. # Create the ETag to check resource hash every time
  33. FileETag MTime Size
  34. </FilesMatch>
  35.  
  36. # Short, 1 min cache for html files, forcing re-validate with ETag
  37. <FilesMatch ".(htm|html)$">
  38. Header set Cache-Control "max-age=60, public, must-revalidate, no-cache"
  39. # Create the ETag to check resource hash every time
  40. FileETag MTime Size
  41. </FilesMatch>
  42.  
  43. # PHP and JSON - disabled
  44. <FilesMatch "\.(php|json)$">
  45. Header set Cache-Control: "max-age=0, no-store, no-cache"
  46. </FilesMatch>
  47.  
  48. # Make sure old browser won't get compressed files
  49. <FilesMatch ".(js|css|xml|svg|json|gz|html|htm)$">
  50. Header append Vary Accept-Encoding
  51. </FilesMatch>
  52. </IfModule>
[APACHE] pobierz, plaintext


[APACHE] pobierz, plaintext
  1. <IfModule mod_expires.c>
  2. # Set basic Expires header as a fallback
  3. # If there is a Cache-Control header with the "max-age" or "s-maxage" directive in the response,
  4. # the Expires header is ignored.
  5. ExpiresActive on
  6.  
  7. # By default cache all for 1 minute only
  8. # (so nothing will be cached for too long)
  9. ExpiresDefault "access plus 60 seconds"
  10.  
  11. # Images
  12. ExpiresByType image/gif "access plus 1 year"
  13. ExpiresByType image/png "access plus 1 year"
  14. ExpiresByType image/jpg "access plus 1 year"
  15. ExpiresByType image/jpeg "access plus 1 year"
  16. ExpiresByType image/pipeg "access plus 1 year"
  17. ExpiresByType image/svg+xml "access plus 1 year"
  18.  
  19. # Icons
  20. ExpiresByType image/ico "access plus 1 year"
  21. ExpiresByType image/icon "access plus 1 year"
  22. ExpiresByType text/ico "access plus 1 year"
  23. ExpiresByType image/x-ico "access plus 1 year"
  24. ExpiresByType image/x-icon "access plus 1 year"
  25. ExpiresByType application/ico "access plus 1 year"
  26. ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
  27.  
  28. # Audio
  29. ExpiresByType audio/ogg "access plus 1 month"
  30. ExpiresByType audio/basic "access plus 1 month"
  31. ExpiresByType audio/mid "access plus 1 month"
  32. ExpiresByType audio/midi "access plus 1 month"
  33. ExpiresByType audio/mpeg "access plus 1 month"
  34. ExpiresByType audio/x-aiff "access plus 1 month"
  35. ExpiresByType audio/x-mpegurl "access plus 1 month"
  36. ExpiresByType audio/x-pn-realaudio "access plus 1 month"
  37. ExpiresByType audio/x-wav "access plus 1 month"
  38.  
  39. # Video
  40. ExpiresByType video/ogg "access plus 1 month"
  41. ExpiresByType video/mp4 "access plus 1 month"
  42. ExpiresByType video/webm "access plus 1 month"
  43. ExpiresByType video/x-msvideo "access plus 1 month"
  44. ExpiresByType video/mpeg "access plus 1 month"
  45. ExpiresByType video/quicktime "access plus 1 month"
  46. ExpiresByType video/x-la-asf "access plus 1 month"
  47. ExpiresByType video/x-ms-asf "access plus 1 month"
  48. ExpiresByType x-world/x-vrml "access plus 1 month"
  49.  
  50. # Fonts
  51. ExpiresByType font/truetype "access plus 1 year"
  52. ExpiresByType font/opentype "access plus 1 year"
  53. ExpiresByType application/x-font-ttf "access plus 1 year"
  54. ExpiresByType application/x-font-woff "access plus 1 year"
  55. ExpiresByType application/font-woff "access plus 1 year"
  56. ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
  57.  
  58. # Scripts and styles
  59. ExpiresByType text/css "access plus 1 year"
  60. ExpiresByType text/javascript "access plus 1 year"
  61. ExpiresByType text/x-javascript "access plus 1 year"
  62. ExpiresByType application/javascript "access plus 1 year"
  63. ExpiresByType application/x-javascript "access plus 1 year"
  64.  
  65. # Data
  66. ExpiresByType application/pdf "access plus 1 month"
  67. ExpiresByType image/vnd.wap.wbmp "access plus 1 month"
  68. ExpiresByType application/vnd.wap.wbxml "access plus 1 month"
  69. ExpiresByType application/smil "access plus 1 month"
  70.  
  71. # Text
  72. ExpiresByType text/html "access plus 1 minute"
  73. ExpiresByType text/plain "access plus 1 minute"
  74. ExpiresByType text/xml "access plus 1 minute"
  75. ExpiresByType application/xml "access plus 1 minute"
  76.  
  77. # RSS
  78. ExpiresByType application/rss+xml "access plus 1 hour"
  79. ExpiresByType application/atom+xml "access plus 1 hour"
  80. ExpiresByType text/x-component "access plus 1 hour"
  81.  
  82. # Live data
  83. ExpiresByType application/json "access plus 0 seconds"
  84. ExpiresByType application/ld+json "access plus 0 seconds"
  85.  
  86. # Manifest
  87. ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
  88. ExpiresByType text/cache-manifest "access plus 0 seconds"
  89.  
  90. # PHP - diable to be cached unless they explicitly send cache headers themselves.
  91. <FilesMatch \.php$>
  92. ExpiresActive Off
  93. </FilesMatch>
  94.  
  95. </IfModule>
[APACHE] pobierz, plaintext


[APACHE] pobierz, plaintext
  1. <IfModule mod_deflate.c>
  2. # Compress HTML, CSS, JavaScript, Text, XML and fonts
  3. AddOutputFilterByType DEFLATE application/javascript
  4. AddOutputFilterByType DEFLATE application/rss+xml
  5. AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  6. AddOutputFilterByType DEFLATE application/x-font
  7. AddOutputFilterByType DEFLATE application/x-font-opentype
  8. AddOutputFilterByType DEFLATE application/x-font-otf
  9. AddOutputFilterByType DEFLATE application/x-font-truetype
  10. AddOutputFilterByType DEFLATE application/x-font-ttf
  11. AddOutputFilterByType DEFLATE application/x-javascript
  12. AddOutputFilterByType DEFLATE application/xhtml+xml
  13. AddOutputFilterByType DEFLATE application/xml
  14. AddOutputFilterByType DEFLATE font/opentype
  15. AddOutputFilterByType DEFLATE font/otf
  16. AddOutputFilterByType DEFLATE font/ttf
  17. AddOutputFilterByType DEFLATE image/svg+xml
  18. AddOutputFilterByType DEFLATE image/x-icon
  19. AddOutputFilterByType DEFLATE text/css
  20. AddOutputFilterByType DEFLATE text/html
  21. AddOutputFilterByType DEFLATE text/javascript
  22. AddOutputFilterByType DEFLATE text/plain
  23. AddOutputFilterByType DEFLATE text/xml
  24. </IfModule>
[APACHE] pobierz, plaintext
  Forum: Przedszkole · Podgląd postu: #1258805 · Odpowiedzi: 13 · Wyświetleń: 636

vokiel
Napisane: 19.04.2022, 18:12:28





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Cytat(Johnas @ 16.04.2022, 21:52:59 ) *
Mam problem z cachowaniem CSS oraz z CSP. O ile kiedyś rozwiązałem problem z pierwszym, a teraz mi się nie udaje to o tym drugim pierwszy raz słyszę.


Możesz nakreślić jaki ma związek CSP z cachowaniem CSS?


Cytat(Johnas @ 16.04.2022, 21:52:59 ) *
Używam hostingu na domena (kropka) pl i wydaję mi się że używają protokołu http w wersji 1.0 bo htaccess nie pozwala na cachowanie CSS. Błąd się nie poprawia.


Cache CSS nie ma związku z protokołem HTTP (no i raczej jest to HTTP/1.1). Może masz zablokowane niektóre dyrektywy jakich możesz użyć w swoim htaccess. A jaki błąd się pojawia?


Cytat(Johnas @ 16.04.2022, 21:52:59 ) *
Mam certyfikat SSL i nie ma tam opcji włączenia http2. Ogólnie to chyba pozostaje zmienić hosting.


Samo posiadanie certyfikatu nie daje z automatu http2, ale jest wymagane. Http2 trzeba włączyć w serwerze www i w danym vhoście (o ile nie zostanie ustawione domyślnie dla wszystkich). Jeśli na hostingu tego nie masz, nie możesz włączyć w panelu i po kontakcie z supportem też nie - to tak, najwyższy czas się przenieść do kogoś, kto ogarnia.
  Forum: Przedszkole · Podgląd postu: #1258790 · Odpowiedzi: 13 · Wyświetleń: 636

vokiel
Napisane: 14.04.2022, 14:47:35





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Wydaje się, że mylisz tu dwie rzeczy. Dołączenie pliku PHP aby skorzystać z zawartych w nim danych jako obiekty PHP z zapisem pliku tekstowego.

Załóżmy, że Twój plik connect.php zawiera konfigurację połączenie z bazą danych:
  1. return [
  2. 'host' => 'localhost',
  3. 'db_user' => 'username',
  4. 'db_name' => 'database',
  5. 'db_password' => 'SuperSecureP433wor0!'
  6. ];


Teraz, gdy zrobisz include takiego pliku do zmiennej możesz łatwo w kodzie korzystać z tych wartości:

  1. $config = include 'connect.php';
  2.  
  3. echo $config['host']; // localhost


Natomiast, jeśli byś chciał zapisać nowe ustawienia do pliku, to musisz po prostu odtworzyć całą zawartość w formie zwykłego tekstu, czyli:

  1. $configString = "return [
  2. 'host' => 'localhost',
  3. 'db_user' => 'username',
  4. 'db_name' => 'database',
  5. 'db_password' => 'SuperSecureP433wor0!'
  6. ];";
  7.  
  8. file_put_contents('connect.php', $configString);
  Forum: PHP · Podgląd postu: #1258713 · Odpowiedzi: 6 · Wyświetleń: 744

vokiel
Napisane: 16.02.2022, 18:38:39





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

A czy potrzebujesz aż przekierowania? Nie lepiej XHR z zapytaniem czy jest zalogowany czy nie. Możesz przecież mieć info o tym w bazie wraz z fingerprintem wyliczonym na tych samych parametrach.
  Forum: Hydepark · Podgląd postu: #1258102 · Odpowiedzi: 10 · Wyświetleń: 3 123

vokiel
Napisane: 16.11.2021, 18:06:01





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Tak SUBSTRING() z LOCATE() plus pewnie jeszcze REVERSE() i LENGTH() da radę wyciągnąć ciąg po ostatniej kropce.

Chociaż łatwiej będzie z SUBSTRING_INDEX():

  1. /* Create a table called NAMES */
  2. CREATE TABLE NAMES(id integer PRIMARY KEY, domain text);
  3.  
  4. /* Create few records in this table */
  5. INSERT INTO NAMES VALUES(1,'domenka.pl');
  6. INSERT INTO NAMES VALUES(2,'inna.domena.eu');
  7. INSERT INTO NAMES VALUES(3,'cokolwiek.eu');
  8. INSERT INTO NAMES VALUES(4,'subdomena.domeny..net');
  9. INSERT INTO NAMES VALUES(5,'jeszcze.dluzsza.nazwa.com');
  10. INSERT INTO NAMES VALUES(6,'example.com');
  11.  
  12.  
  13. SELECT
  14. SUBSTRING_INDEX(`domain`, '.', -1) AS 'tld',
  15. COUNT(`id`) AS 'items_count'
  16. FROM `NAMES`
  17. GROUP BY tld


Kod
tld    ile
pl    1
eu    2
net    1
com    2

  Forum: MySQL · Podgląd postu: #1257101 · Odpowiedzi: 2 · Wyświetleń: 2 128

vokiel
Napisane: 27.08.2021, 10:29:02





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Użyj array_filter()

  1. $arr = [
  2. 1 => null,
  3. 2 => '',
  4. 3 => 0,
  5. 4 => false,
  6. ];
  7. // bool(true)
  8.  
  9. $arr = [
  10. 1=> null,
  11. 2 => true
  12. ];
  13. // bool(false)
  Forum: Przedszkole · Podgląd postu: #1256422 · Odpowiedzi: 2 · Wyświetleń: 539

vokiel
Napisane: 23.08.2021, 08:36:23





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

<Directory> to dyrektywa pliku konfiguracyjnego vhosta (lub samego serwera) http://httpd.apache.org/docs/2.4/mod/core.html#directory więc nie wrzucisz tego w .htacess.
  Forum: Apache · Podgląd postu: #1256392 · Odpowiedzi: 4 · Wyświetleń: 3 407

vokiel
Napisane: 20.08.2021, 08:16:57





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Jak masz error 500 to masz też wiadomość gdzie on nastąpił - albo wraz z odpowiedzią (w środowisku dev) albo w logach na serwerze. Log będzie dokładny, będzie w nim napisane w którym pliku i w której linii,
  Forum: Przedszkole · Podgląd postu: #1256369 · Odpowiedzi: 3 · Wyświetleń: 405

vokiel
Napisane: 4.08.2021, 11:24:57





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

https://www.php.net/manual/en/function.array-intersect.php
  Forum: PHP · Podgląd postu: #1256273 · Odpowiedzi: 2 · Wyświetleń: 858

vokiel
Napisane: 17.04.2021, 13:10:37





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Pewnie lokalnie masz branch master (bo to domyślny gita), a na GitHub domyślny stał się main (ze względu na głupie oskarżenia o rasizm, że skoro jest master to musi być slave, a slavery i BLM itd).

Także sprawdź lokalny branch (git branch). Jeśli masz master, to przełącz się (stwórz nowy, zmień nazwę) na main. Lub na GH zmień na master.
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1255658 · Odpowiedzi: 2 · Wyświetleń: 3 648

vokiel
Napisane: 17.03.2021, 08:51:54





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Nie bardzo jeśli to będzie np UUID4, np:
Kod
04de6b6e-9390-44fc-8b63-db81d691471f
  Forum: PHP · Podgląd postu: #1255417 · Odpowiedzi: 4 · Wyświetleń: 1 046

vokiel
Napisane: 9.11.2020, 23:19:18





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

A jak dodajesz PHPMailera do projektu? Przez Composera czy osobno ściągałeś wszystkie pliki i ręcznie je załączasz?

  Forum: PHP · Podgląd postu: #1253631 · Odpowiedzi: 11 · Wyświetleń: 2 786

vokiel
Napisane: 9.11.2020, 10:52:20





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Spokojnie możesz się łączyć do Gmaila z PHPMailera, tylko musisz uderzać na porty TLS szyfrowane a w Gmailu włączyć SMTP (domyślnie wyłączone), ewentualnie jeszcze ustawić, aby pozwalał na mniej bezpieczne aplikacje.

Czyli host: smtp.gmail.com, port: 587 lub 465 i jazda.

Oczywiście ustawiasz podstawowe parametry połączenia SMTP z autoryzacją, m.in:

  1. $mail->isSMTP();
  2. $mail->SMTPAuth = true;
  3. $mail->SMTPSecure = 'ssl';
  4. // Jeśli dalej nie działa, to włącz debugowanie po więcej szczegółów przyczyny:
  5. $mail->SMTPDebug = SMTP::DEBUG_SERVER;


Masz też na GH przykład łączenia do Gmaila: https://github.com/PHPMailer/PHPMailer/blob...ples/gmail.phps
  Forum: PHP · Podgląd postu: #1253617 · Odpowiedzi: 11 · Wyświetleń: 2 786

vokiel
Napisane: 20.10.2020, 18:59:07





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Co do porównywania null !== $var jest coś takiego jak is_null($var).

Poza tym, dobrze zapoznać się z tabelką na https://www.php.net/manual/en/types.comparisons.php żeby nie mieć wątpliwości co daje jakie wyniki.
  Forum: Przedszkole · Podgląd postu: #1253311 · Odpowiedzi: 11 · Wyświetleń: 814

vokiel
Napisane: 16.10.2020, 16:38:19





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Bo na porcie 8083 masz inną aplikację, która ma swoją konfigurację. Odnajdź vhosta do tamtej aplikacji i tam przepisz ścieżki tego certyfikatu LE.
  Forum: Serwery WWW · Podgląd postu: #1253264 · Odpowiedzi: 2 · Wyświetleń: 4 980

vokiel
Napisane: 21.08.2020, 12:30:05





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Użyj wbudowanego https://www.php.net/manual/en/book.ssh2.php lub https://github.com/phpseclib/phpseclib
  Forum: PHP · Podgląd postu: #1252538 · Odpowiedzi: 1 · Wyświetleń: 919

vokiel
Napisane: 4.06.2020, 11:47:10





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Co do modułów to możesz je wszystkie mieć na serwerze i włączać je w konfiguracji dla danego klienta. Jeśli są to jakieś zewnętrzne moduły, które klient może wgrać, to uploadujesz je do folderów per klient - każdy ma swój.

Co do bazy - to zależy :-) Jeśli aplikacja jest mała, danych nie ma za dużo to możesz spokojnie to trzymać w jednej dodając wszędzie identyfikator klienta. Jeśli jest większa, więcej danych to osobna baza będzie lepszym rozwiązaniem. Kwestia aktualizacji jest moim zdaniem pomijalna - bo to obojętne czy skrypt uruchomisz dla jednej wielkiej bazy czy dla wielu mniejszych. Mniejsze nawet możesz podzielić czasowo, uruchomić w kilku procesach i finalnie wyjdzie nawet szybciej (no i aktualizacja u jednego klienta nie spowalnia pracy pozostałych).

Co do podziału klient - nowy VPS to też ma sens. Ale jak wyżej - wszystko zależy od przypadku. Jeśli np w aplikacji masz różne plany, z różnymi parametrami wydajnościowymi, albo klient płaci za faktyczne zużycie to może się bardziej opłacać (czy tez być sprawiedliwiej) rozdzielać klientów na osobne maszyny. Wtedy działania jednego klienta nie wpływają w ogóle na innych. Wszystkie działania administracyjne mogą być odseparowane, jeden klient nie nadużyje zasobów przydzielonych dla innego klienta. Jedynie tutaj proponowałbym pójść w stronę kontenerów niż osobnych VPSów - będzie wygodniej i raczej taniej.

  Forum: PHP · Podgląd postu: #1251516 · Odpowiedzi: 4 · Wyświetleń: 827

vokiel
Napisane: 2.06.2020, 10:30:08





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

  1. // Load Composer's autoloader
  2. require 'vendor/autoload.php';


dajesz na początku głównego skryptu (zwykle index.php), potem w kolejnych plikach / klasach wstawiasz use XXX\YYY w zależności od potrzeb.
  Forum: PHP · Podgląd postu: #1251491 · Odpowiedzi: 1 · Wyświetleń: 626

vokiel
Napisane: 16.05.2020, 13:01:10





Grupa: Zarejestrowani
Postów: 2 592
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----

Jak widzisz przed deklaracją namespace masz jeszcze jakiś napis "Subject", sprawdź też kodowanie pliku czy nie jest UTF-8 z BOM.
  Forum: PHP · Podgląd postu: #1251217 · Odpowiedzi: 2 · Wyświetleń: 1 179

18 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 15:53