Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z krótkim kodem
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
7sekund
Witam,

chciałbym zapytać co zrobić aby poniższy skrypt wypisywał na ekran tyle linii, jaka jest wartość zmiennej $wierszy.
W pierwszej linii znajdować się powinna jedna *, każdy kolejny wiersz, to o jedną * więcej.
W efekcie działania skryptu wiersze powinny wyglądać następująco:

*
**
***
****
*****

Tyle udało mi się napisać:
  1. <?php
  2. $wierszy = 5;
  3. for($i=0; $i<5; $i++){
  4. for($j=0; $j<5; $j++){
  5. echo ' ';
  6. }
  7. echo $wierszy.="*";
  8. }
  9. ?>


Czy mógłbym prosić o wskazówkę, jak ten skrypt poprawić , aby działał tak, jak opisałem wyżej?
nospor
Sobie czasami tak zycie utrudniacie na wlasne zyczenie....

  1. $wierszy = 5;
  2. for($i=1; $i<=$wierszy; $i++){
  3. echo str_repeat("*", $i) . '<br />;
  4. }

Chyba ze to nie na ekran a do pliku to wtedy nie '<br />' a "\n"
7sekund
Dzięki tyle, że ja nie znam tej funkcji str_repeat() , bo ćwiczę dopiero najprostsze podstawy i jestem na etapie pętli , ale na pewno przyda mi się to w dalszym etapie nauki.
Mam nadzieję, że będą te dalsze etapy, bo jak na razie to jest tak, że nad jednym prostym skryptem siedzę 2 godziny i nic nie posuwam się do przodu. Obawiam się tylko tego, żebym się nie zniechęcił do programowania w PHP:-(

Czy jest jakiś sposób, żeby samemu umieć dochodzić do rozwiązania problemu, przynajmniej w tak prostych skryptach?
nospor
Cytat
Obawiam się tylko tego, żebym się nie zniechęcił do programowania w PHP
Nie ma znaczenia czy to php, java czy inny jezyk. Petle to petle wink.gif

  1. $wierszy = 5;
  2. for($i=1; $i<=$wierszy; $i++){
  3. for($j=1; $j<=$i; $j++){ // ta petla bedzie isc w gore do wartosci z $i i odpowiada za liczbe gwiazdek w wierszu
  4. echo '*';
  5. }
  6. echo '<br />'; //nowa linia
  7. }
7sekund
Super , to działa teraz !
Bardzo Ci dziękuję, także za te komentarze w kodzie ! :-) :-)

Witam ponownie.
Mam w ramach ćwiczenia taki oto kod:

  1. <?php
  2. define("KOSZULKA", 14.99); // cena koszulki jako stała
  3. define("SPODNIE", 45.99); //cena spodni
  4. define("BUTY", 30.00); // cena butów
  5. define("CZAPKA", 9.63); // cena czapki
  6. define("P_VAT", 0.23); // wysokość podatku vat
  7.  
  8. //przypisanie zmiennych formularza
  9. $ile_koszulki = $_POST['koszulki'];
  10. $ile_spodnie = $_POST['spodnie'];
  11. $ile_buty = $_POST['buty'];
  12. $ile_czapki = $_POST['czapki'];
  13. $ile_zaplata = $_POST['zaplata'];
  14.  
  15. //wartość netto zamówionych przedmiotów
  16. $kwota_koszulki_netto = $ile_koszulki * KOSZULKA;
  17. $kwota_spodnie_netto = $ile_spodnie * SPODNIE;
  18. $kwota_buty_netto = $ile_buty * BUTY;
  19. $kwota_czapki_netto = $ile_czapki * CZAPKA;
  20.  
  21. //cena netto całego zamówienia
  22. $kwota_zamowienia_netto = $kwota_koszulki_netto + $kwota_spodnie_netto + $kwota_buty_netto + $kwota_czapki_netto;
  23.  
  24. //wartości brutto
  25. $kwota_koszulki_brutto = $kwota_koszulki_netto + $kwota_koszulki_netto * P_VAT;
  26. $kwota_spodnie_brutto = $kwota_spodnie_netto + $kwota_spodnie_netto * P_VAT;
  27. $kwota_buty_brutto = $kwota_buty_netto + $kwota_buty_netto * P_VAT;
  28. $kwota_czapki_brutto = $kwota_czapki_netto + $kwota_czapki_netto * P_VAT;
  29. $kwota_zaplata_brutto = $ile_zaplata;
  30.  
  31. //cena zamówienia brutto
  32. $kwota_zamowienia_brutto = $kwota_koszulki_brutto + $kwota_spodnie_brutto + $kwota_buty_brutto + $kwota_czapki_brutto
  33.  
  34. //wydawana reszta od zapłaconej kwoty
  35. $reszta = $kwota_zaplata_brutto - $kwota_zamowienia_brutto;
  36. ?>


Czy mógłby ktoś podpowiedzieć czemu wychodzi błąd o tym, że zmienna $reszta jest niezdefiniowana ?
trueblue
Bo zmienne $_POST są niezdefiniowane?
7sekund
Ok już wiem, głupi błąd, polegający na tym, że po poprzedniej zmiennej nie było tam średnika....
Nie wiem dlaczego serwer wypisuje wtedy błąd o niezdefiniowanej zmiennej.

Dalej jest taki kod w pliku html:

  1. <form action="zamowienie.php" method="post">
  2. Liczba zamawianych koszulek:
  3. <input type="text" name="koszulki" size=3 maxsize=3 /><br />
  4. Liczba zamawianych spodni:
  5. <input type="text" name="spodnie" size=3 maxsize=3 /><br />
  6. Liczba zamawianych par butów:
  7. <input type="text" name="buty" size=3 maxsize=3 /><br />
  8. Liczba zamawianych czapek:
  9. <input type="text" name="czapki" size=3 maxsize=3 /><br />
  10. <label for="zaplata">Zapłata: </label>
  11. <input type="text" name="zaplata" size=3 maxsize=3 value=""/><br />
  12. <input type="submit" value="Złóż zamówienie" />
  13. </form>
  14. </body>


Mam takie pytanie: jak przekazać wartość zapłaty za produkty, wykorzystując funkcję echo w atrybucie value pola typu hidden ?

Jak zrobię input type="hidden" , to wtedy tej wartości zapłaty nie ma gdzie wpisać , bo pole "Zapłata" nie będzie widoczne na stronie....
nospor
No jesli to jest doslownie plik .html to nic nie zrobisz. Co innego gdyby to byl plik php generujacy html smile.gif
7sekund
Ok, dzięki za podpowiedź.
Chodzi o wykorzystanie wtedy funkcji $_SERVER['PHP_SELF']; w atrybucie action formularza?
gino
Powinien wypisać błąd typu "Unexpected variable...".
Nie chodzi o wykorzystanie $_SERVER['PHP_SELF'], tylko o wygenerowanie całego pliku przez php, czyli zamiast rozszerzenia html musi być php.
viking
Stosuj też kod
  1. $ile_koszulki = $_POST['koszulki'] ?? 0;

Skoro to liczba to czemu nie https://developer.mozilla.org/en-US/docs/We...nt/input/number ?
7sekund
gino - tak wtedy będzie to plik *.php a nie *.html .
viking - dzięki za podpowiedź odnośnie type="number" zamiast "text".

Cześć,
mam teraz tabliczkę mnożenia do zrobienia w PHP i napisałem taki skrypt:

  1. <?php
  2. echo "<table>";
  3. for ($i=1; $i<=25; $i++) //wypisywanie w kolumnach - oś Y
  4. {
  5. echo "<tr>";
  6. for ($j=1; $j<=25; $j++) //wypisywanie w wierszach - oś X
  7. {
  8. echo '<td align="right">'; //wyrównanie do prawej w komórkach
  9. if ($i>0 && $j>0)
  10. {
  11. echo '<span style="color: blue">' . $i*$j . '</span>'; //niebieskie liczby parzyste
  12. }
  13.  
  14. ........
  15. {
  16. echo '<span style="color: red">' . $i*$j . '</span>'; //czerwone liczby nieparzyste
  17. }
  18.  
  19.  
  20. echo "</td>";
  21. }
  22. echo "</tr>";
  23. }
  24. echo "</table>";
  25. ?>


i nie wiem jaki warunek wpisać w te kropeczki, żeby uzyskać czerwone liczby nieparzyste.
Czy może ktoś podpowiedzieć? ;-)
trueblue
Proponuję wrócić do podstaw: https://www.matemaks.pl/liczby-parzyste-i-nieparzyste.html
7sekund
Wiem jakie są zasady matematyczne, niemniej dzięki za podpowiedź aby szukać w tym kierunku ! To bardzo pomogło i efekt osiągnięty.
Teraz skrypt działa, a kod wygląda tak:

  1. <?php
  2. echo "<table>";
  3. for ($i=1; $i<=25; $i++) //wypisywanie w kolumnach - oś Y
  4. {
  5. echo "<tr>";
  6. for ($j=1; $j<=25; $j++) //wypisywanie w wierszach - oś X
  7. {
  8. echo '<td align="right">'; //wyrównanie do prawej w komórkach
  9. if ($i>0 && $j>0)
  10. {
  11. if (($i%2 == 0) || ($j%2 == 0))
  12. {
  13. echo '<span style="color: blue">' . $i*$j . '</span>'; //niebieskie liczby parzyste
  14. }
  15. else
  16. {
  17. echo '<span style="color: red">' . $i*$j . '</span>'; //czerwone liczby nieparzyste
  18. }
  19. }
  20. echo "</td>";
  21. }
  22. echo "</tr>";
  23. }
  24. echo "</table>";
  25. ?>

viking
Staraj się zawsze tak pisać kod aby modyfikować jak najmniejszy zakres danych powiązany z zadaniem. Co gdybyś miał tam inne, bardziej zaawansowane warunki dla span?
  1. if ($i>0 && $j>0)
  2. {
  3. $clEvenOdd = (($i%2 == 0) || ($j%2 == 0)) ? 'even' : 'odd';
  4. echo '<span class="'.$clEvenOdd.'">' . $i*$j . '</span>';
  5. }

Generujesz pełno zbędnego kodu dla align="right"? Dlaczego nie jedna definicja w css?
Dodatkowo echo "</table>"; Nie potrzebujesz parsować stringu zatem echo '</table>';
7sekund
Cześć,
to się zgadza i kod, który napisałeś pewnie działa prawidłowo, ale ja jeszcze takich funkcji nie znam , bo ćwiczę podstawy, a tutaj chodziło po prostu o użycie pętli , więc tak zrobiłem.



Chciałbym zapytać o taki skrypt:

  1. <?php
  2. $ile = 1;
  3. for ($i=5; $i>=$ile; $i--)
  4. {
  5. for ($j=5; $j>=$i; $j--) //idzie w dół do wartości $i i wyswietla $j gwiazdek
  6. {
  7. echo '*';
  8. }
  9. echo '<br />';
  10. }
  11. ?>


Nie umiem tu zrobić tak, aby te pętle spowodowały efekt:
*****
****
***
**
*

Siedzę znowu z 1,5 godziny nad tym i nie wiem gdzie robię błąd! Czy ktoś mógłby podpowiedzieć jak to poprawić, żeby ten efekt był taki, jak wyżej z tymi gwiazdkami?
nospor
Programowanie to tez myslenie, a nie ze ty odwracasz moj skrypt w calosci i zadowolony.
Skoro nie rozumiesz petli to usiadz przy nich dluzej


Przeciez o to
for ($j=5; $j>=$i; $j--) jest totalnie zle.
Ta druga petla ma nadal byc jak byly czyli
for ($j=1; $j<=$i; $j++)
przeciez $i zaczyna sie od pieciu i spada w dol a ty chcesz robic tylko gwiazdek ile ma $i a nie na odwrot
7sekund
No właśnie siedzę przy tych pętlach już trzy dni z rzędu i umiem tylko z jedną zmienną zrobić, natomiast nie rozumiem jak działa skrypt, który zawiera dwie zmienne, jak tutaj $i i $j :-(
Szukałem tego w necie ale nic nie ma na ten temat, a przecież są takie możliwości , żeby dwie zmienne były w zagnieżdżonych pętlach lub w jednej.
Może źle szukam, nie wiem...:-(
nospor
no przeciez ci podalem poprawny kod post wczesniej
7sekund
Tak, teraz sprawdziłem, dzięki - działa, ale chciałbym zrozumieć to działanie drugiej pętli.
Nie wiem gdzie szukać w necie jakichś omówień takich przykładów.. szukałem ale bez skutku :-(
nospor
NIe bardzo wiem co tu omawiac.
Druga petla w tym przypadku, jak zarowno w przypadku z twoich pierwszych postow, ma za zadanie wygenerowac tyle gwiazdek, ile aktualnie posiada pierwsza petla

Za bardzo przejmujsze sie faktem, ze jest to petla w petli. To nie ma najmniejszego znaczenia. Rownie dobrze zmienna $i moze pochodzic z czegos innego a twoim zadaniem jest tyle razy wykonac FOR jaka wartosc ma $i i juz.
7sekund
Nie bardzo rozumiem, a do tego wiem, że można w jeden pętli for użyć dwóch zmiennych i wtedy oddziela się je raz przecinkiem a raz średnikiem. Jak i co jest po kolei i dlaczego to już nigdzie nie jest napisane.
nospor
Ja tam nie wiem co rozumiesz przez nigdzie, ale pierwsza rzecz gdzie powininies zagladac to oficjalny manual, i nagle NIGDZIE znika

https://www.php.net/manual/en/control-structures.for.php
7sekund
Dzięki ale manual wiele mi nie wyjaśnił...
np. tego nie umiem zrozumieć:

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
bo nie wiem co robi $i a co $j w takim przypadku, a dalsze przykłady , to używają takich funkcji php , do których jeszcze nie doszedłem.

Poza tym są pętle, które mają nie 6 przypadków (jak tutaj) , a np. 4 , bo któreś dwa są pomijane. Dla kogoś kto to umie, to może się wydawać śmieszne, co piszę, ale skąd ja mam wziąć takie informacje ? Mam dwie książki i kursy php z netu ale to guzik daje. Chyba to musi mi ktoś na żywo wyjaśnić....
nospor
To zamiast 1.5h spedz 3 wieczory na petle. Tworz rozne kody, patrz co zwracaja, patrz jak lataja i ogarniaj. Biadoleniem nic sie nie nauczysz wink.gif
A zmienne to zmienne. RObia to co ty chcesz
gino
Nie rozumiesz, bo brakuje podstaw, @nospor poddał Ci link do do control structures, to najbardziej podstawowe funkcje języka php (innych zresztą też) służące do przepływu sterowania programem w taki sposób, aby wszystko co zakodowałeś wykonało się zgodnie z algorytmem.

I nie, ta pętla nie ma 6 przypadków(?), jej składnia to 3 wyrażenia rozdzielone średnikami (popatrz, gdzie w Twoim przykładzie są te średniki, wtedy zrozumiesz):
- inicjacja zmiennej,
- wyrażenie testujące,
- zmiana wartości zmiennej.

Aby testowanie zachodziło, trzeba zmienną incremetować. Zapis $i++ oznacza post-incrementację, czyli zwiększenie zmiennej o 1, ale najpierw wartość tej zmiennej zostanie zwrócona.
Incrementing/Decrementing Operators
Jest też zapis $j+=$i;
Oznacza dokładnie to samo co:
$j=$j+$i;
czyli za każdym przejściem pętli zmienna $j zwiększa się o swoją własną wartość plus wartość zmiennej $i;
Print to print. Ot cała filozofia. Normalna pętla FOR i normalna jej składnia. Manual, manual, manual, że zacytuje klasyka.
7sekund
>>> gino:

Wydawało mi się że te trzy wyrażenia w instrukcji for jakoś rozumiem ale teraz zacząłem to ćwiczyć dokładnej i jak na razie, to zrobiłem większą część zadań ze strony: https://kamakaczmarek.net/php-petle-oraz-sk...a-alternatywna/ . Na tej stronie akurat są te zadania do wykonania przystępne, bo np. jeszcze nie doszedłem do funkcji i tablic ale wszystko przede mną.
Dzięki za wskazówki wyżej. :-)

>>> nospor:
Dzięki również. Tak też zamierzam zrobić, bo dużo ćwiczeń to jedyna rada , a gdybym miał w czymś problem , to pozwolę sobie zwrócić się do was po wskazówki.:-)

Cześć,
mam taką tablicę w pętli for:

  1. $start = strtotime("00:00, 24 December 2021");
  2. $startdate = date("Y m d l", $start);
  3. $end = strtotime("+ 10 Years", $start);
  4. // $enddate = date("Y m d l", $end);
  5.  
  6. for ($start = strtotime("00:00, 24 December 2021"); $start < $end; $start = strtotime("+ 1 Year", $start))
  7. {
  8. $s = date ("Y m d l", strtotime("+ 1 Year", $start));
  9. array_push($wigilie, $s); //dopisuje datę kolejnej wigilii do tablicy
  10. }
  11. print_r ($wigilie);


i chciałbym podobny efekt uzyskać za pomocą pętli foreach...

Mam taki kod napisany:

  1. $start = strtotime("00:00, 24 December 2021");
  2. $startdate = date("Y m d l", $start);
  3. $wigilie = [
  4. "0" => "$startdate" //tablica: [0] => 2021 24 12 Friday
  5. ];
  6.  
  7. foreach ($wigilie as $i => $startdate)
  8. {
  9. $i = 1;
  10. $y = strtotime("+ 1 Year", $start);
  11. array_push ($wigilie, date("Y m d l", $y));
  12. $y++;
  13. print_r ($wigilie);
  14. }


Ten kod wypisuje mi tylko taką tablice:

Array ( [0] => 2021 12 24 Friday [1] => 2022 12 24 Saturday )

a powinien wypisywać daty 10 kolejnych wigilii w jednej tablicy, jak skrypt z pętlą for wyżej.

Czy może ktoś mi podpowiedzieć jak w prosty sposób można dokończyć ten skrypt ?

Nie umiem zrobić w pętli skoku co 1 rok, żeby wypisał z 10 kolejnych lat.
nospor
No nie mozesz tamtej petli FOR zamienic na FOREACH. No kazda sluzy do czego innego. FOREACH sluzy tylko do iterowania po tablicy. FOR jest bardziej uniwersalne.

podsumowujac: nie da sie tu uzyc FOREACH. Co ci przeszkadza FOR?
7sekund
Nie, no dzięki za informację, bo myślałem, ze można tez przez foreach to rozwiązać i siedziałem nad tym dzisiaj kilka godzin z efektem jak powyżej. Teraz, skoro napisałeś, że się tak nie da, to mogę się skupić na następnych zadaniach :-)

Cześć,
mam teraz pewien problem i znowu nie wiem gdzie tkwi błąd...
Kod jest taki:

  1. function domena($email)
  2. {
  3. $spr = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  4. $email = explode ('@', $email);
  5. $spr_domene = implode ('.', $email);
  6. $pl = '/^[pl]$/';
  7. if (preg_match($pl, $spr_domene))
  8. {
  9. return $email;
  10. }
  11. else
  12. {
  13. return false;
  14. }
  15. }
  16.  
  17. $email = $_POST['email'];
  18. $imie = $_POST['imie'];
  19. $tresc = $_POST['tresc'];
  20. $blad_danych = false;
  21.  
  22. if (!$email)
  23. {
  24. echo 'Podany adres nie należy do polskiej domeny';
  25. }
  26. else
  27. {
  28. $blad_danych = true;
  29. }
  30.  
  31. if ($blad_danych)
  32. {
  33. echo '<br /> Wystąpił jeden lub więcej błędów podczas przetwarzania danych.';
  34. }
  35. else
  36. {
  37. echo '<br />' . "Imię klienta: $imie" . '<br />';
  38. echo "Adres e-mail: $email" . '<br />';
  39. echo "Podany email należy do polskiej domeny" . '<br />';
  40. echo "Treść wiadomości: $tresc" . '<br />';
  41. }


I ten kod zawsze zwraca mi komunikat: Wystąpił jeden lub więcej błędów podczas przetwarzania danych. jaka by nie była domena adresu email.
Jak by to było można zrobić , żeby ten kod wyrzucał komunikat o tym, czy dany adres należy do polskiej domeny czy nie?
nospor
yyy....

  1. $email = $_POST['email'];
  2.  
  3. if (!$email)
  4. {
  5. echo 'Podany adres nie należy do polskiej domeny';
  6. }
  7. else
  8. {
  9. $blad_danych = true;
  10. }

Naprawde nie widzisz bledu tutaj? Przeciez ty nie sprawdzasz zadnej domeny, tylko czy email jest puste czy nie puste
7sekund
Tak, ale w książce mam za zadanie właśnie sprawdzić , czy należy do polskiej domeny , czy nie...
Mam więcej tego kodu ale wkleiłem tylko to, co potrzebne do funkcji $email.
nospor
No to jesli funkcja domena() sluzy do sprawdzenia co chcesz, to ja laskawie wywolaj

$email = domena($_POST['email']);

Aczkowliek nie sprawdzwalem czy ta funkcja robi to co powinna wink.gif
7sekund
Sorry, wcześniej coś pomieszałem...
Ten kod co napisałeś to niestety nie działa...
nospor
Bo pewnie funkcja domena() jest do kitu wink.gif
7sekund
Całkiem możliwe ale nie wiem czy ta zmienna $pl jest dobrze przypisana...

Jest $email przypisany oraz funkcja function domena($email) i w tej funkcji coś z tą zmienną $pl jest nie tak..
nospor
Generalnie, jak zwykle, zes przekombinowal
Jesli chcesz sprawdzac tylko .pl to

  1. function isPL($email) {
  2. return substr($email, -3) === '.pl';
  3. }
  4.  
  5.  
  6.  
  7. $email = $_POST['email'];
  8.  
  9. if (isPL($email))
  10. {
  11. echo 'To jest PL';
  12. }
  13. else
  14. {
  15. echo ' to NIE JEST PL' ;
  16. }
  17.  

I juz
7sekund
nospor bardzo Ci dziękuję:-) Pomogło, bo działa!
Widzę , że tu jest nowa funkcja substr(), więc muszę ją jeszcze przestudiować . smile.gif

Cześć, mam teraz pewien problem z funkcją mail() .

Wywala mi taki komunikat:

Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. m20-20020a056512115400b0044aa2184999sm2238421lfg.142 - gsmtp in C:\xampp\htdocs\rozdzial5\mail.php on line 17 .

Wydaje mi się, że dobrze skonfigurowałem php.ini oraz sendmail.ini - wpisałem swój adres oraz adres smtp dla gmail'a i hasło do tego konta, ale niestety próba wysłania maila kończy się takim komunikatem, jak wyżej.

Czy mozna coś temu zaradzić, bo chciałbym dalej się uczyć , ale bez tego to nie będę wiedział czy dobrze robię.
nospor
Z gmail to nie taka prosta pilka

https://netcorecloud.com/tutorials/send-an-...rver-using-php/

A najlepiej sugerowalbym bys uzyl klasy PHPMailer
7sekund
Cześć nospor,

ten PHPmailer to jak się instaluje? Czy to jest skomplikowane ? Trzeba to jeszcze potem jakoś skonfigurować?

Może lepiej byłoby stworzyć sobie jakieś konto na innym , polskim serwerze, aby takie wiadomości można było wysyłać bez problemu z poziomu localhost? Czy są jakieś serwery polskie, które to umożliwiają?

Mam jeszcze taki problem, że dzisiaj podczas ćwiczeń nagle zniknęły mi wszystkie linki do plików z całego jednego folderu... Co zrobić aby znowu się ta lista plików pojawiła, zamiast pustej strony? Nie rozumiem co się stało...
Pliki oczywiści są w danym folderze na serwerze..
nospor
No ale google nie boli
https://github.com/PHPMailer/PHPMailer
tam masz wszystko, jak podlaczyc, jak skonigurowac

Cytat
Może lepiej byłoby stworzyć sobie jakieś konto na innym , polskim serwerze, aby takie wiadomości można było wysyłać bez problemu z poziomu localhost?
korzystanie z natywnego mail() raczej malo kto stosuje. Glownie korzysta sie z klas ala PHPMailer

Cytat
Mam jeszcze taki problem, że dzisiaj podczas ćwiczeń nagle zniknęły mi wszystkie linki do plików z całego jednego folderu

Jakie znowu linki? Wez pod uwage ze my nie siedzimy ci w glowie, nie mamy twojego kompa przed nosem i w myslach nie czytamy tongue.gif
7sekund
Jeśli chodzi o te linki , to miałem na myśli, że jak się otwiera folder na localhost, to wtedy widac listę plików, które da się kliknąć jak łącze. Natomiast dzisiaj podczas ćwiczeń była ta lista z całego folderu na serwerze XAMPP, a potem w którymś momencie kliknąłem odświeżanie strony i wszystko zniknęło, a w miejsce tych plików pojawiła się pusta strona. Natomiast sprawdziłem, że na serwerze fizycznie te pliki są więc nie wiemw czym jest problem....

To wszystko napisałem wyżej, tylko w skrócie.

Mam teraz problem , jak przywrócić tę listę plików z powrotem ..?

Ściągnąłem ten PHPmiler i composer, proces instalacji przebiegł ok , bo nic nie wyrzuciło, jednak nie wiem co dalej.. Jak za pomocą tego wysyłać emaile?
Przeczytałem kilkanaście stron ale niestety nigdzie nie jest wyjaśnione od podstaw, jak to robić...
nospor
przeciez podalem ci linka do PHPMAiler, jest tam przyklad SIMPLE EXAMPLE ktory pokazuje jak wysylac maila. No co ja mam wiecej powiedziec?

Co do linkow to nadal nie kumam. Nie wiem, ja nie otwieram folderow w xamp, nie wiem o jakie linki ci chodzi. Moze ktos inny wyczai
7sekund
Próbuję wysłać email za pomocą PHPmailer ale niestety chyba gmail blokuje, bo po każdej próbie przychodzi na to konto pocztowe krytyczny alert bezpieczeństwa oraz błąd:

Nie udało sie wysłać wiadomości...Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

https://images90.fotosik.pl/583/20885bf7242c6358med.jpg

Tu są pliki serwera pod adresem wyżej. Jednak w innym folderze, w którym teraz pracuję nie pojawia się nic, tylko wyświetla pustą stronę.. W czym tutaj może być problem?
Salvation
Pokaż kod jaki masz.
Plus zerknij tutaj: https://webinsider.pl/phpmailer-php-mandril...pmailer-i-gmail - może się coś rozjaśni.
nospor
Cytat
Tu są pliki serwera pod adresem wyżej. Jednak w innym folderze, w którym teraz pracuję nie pojawia się nic, tylko wyświetla pustą stronę.. W czym tutaj może być problem?

Czyli to nie sa zadne linki a poprostu listing katalogu.
A jesli ci nie listuje teraz to pewnie wylaczyles tego opcje, albo bezposrdnio w apacha albo popprze .htaccess.
Po co ci to w ogole?
7sekund
Salvation -->> dzięki, teraz wszystko juz działa i maile wychodzą i dochodzą takie, jak powinny:-)

nospor -->> przecież muszę mieć tę listę, żeby sobie klikać w plik, nad którym pracuję na serwerze, bo potem on się otwiera też tam i wykonuje zadanie. Jak inaczej to można zrobić, nie wybierając pliku z listy?
Gdzieś ona znikła ale tylko dla jednego folderu, bo inne się wyświetlają prawidłowo...
Dodam, że stworzenie nowego folderu o innej nazwie i przekopiowanie tych plików do niego daje ten sam efekt...
trueblue
A nie ma czasem w katalogu pliku index.html lub index.php?

Pierwsze słyszę o takiej metodzie uruchamiania skryptów. Przecież nazwę możesz wpisać w pasek adresu przeglądarki.
A jeśli bardzo potrzebujesz, to napisz skrypt listujący pliki w katalogu i wyświetlający je jako linki.
dublinka
Cytat(7sekund @ 9.04.2022, 22:16:26 ) *
przecież muszę mieć tę listę, żeby sobie klikać w plik, nad którym pracuję na serwerze, bo potem on się otwiera też tam i wykonuje zadanie. Jak inaczej to można zrobić, nie wybierając pliku z listy?

Jakies dziwaczne sposoby. Kazdy robi to tak ze wywoluje localhost pozniej ew. jakis folder i na koncu nazwe pliku. Jak juz wiesz pliki trzymasz w katalogu "htdocs". W skrocie mozna powiedziec ze to Twoj localhost więc:

localhost/katalog/nazwa_pliku.php

Tak to się robi a nie jakas lista plików 🤔
7sekund
dublinka -->> w poście wyżej tego z 08.04 o godz. 22.40 , pokazałem zdjęcie jak to u mnie wygląda i myślę , że normalnie się wywołuje właśnie pliki z tego katalogu z htdocs poprzez przeglądarkę (localhost). Myślę, że o tym samym tu piszemy.
Kiedy chciałbym otworzyć bezpośrednio przez menadżera plików, to wtedy pliki *.php otwierają się tylko do edycji .

Mniejsza o to, problem z wysyłaniem poczty był wcześniej rozwiązany przez Salvation, natomiast ta lista plików na localhost wróciła metodą prób i błędów. Okazało się, że pustą stroną był plik o nazwie index.html , który miał 0 B. Po jego usunięciu wszystko się wyświetla normalnie.

Teraz dotarłem do operacji na plikach no i mam problem, w jaki sposób przekopiować grupę plików , np. o rozszerzeniu *.php do innego, danego folderu ?

Jeden plik to da się załatwić poprzez copy(), ale grupy plików nie umiem :-(

Mam taki kod:
  1. $sprawdz = '/^[a-zA-Z0-9_-]+[\.]+[php]{3}$/';
  2. $plik = fopen("../xxx/*.php", "r+");
  3.  
  4. if (preg_match($sprawdz, $plik))
  5. {
  6. copy('../xxx/*.php', '../rozdzial5/*.php');
  7. echo '<br /> Poprawnie skopiowano plik: '.$plik.'<br />';
  8. fclose($plik);
  9. }
  10. else
  11. {
  12. echo '<br /> Nieudane kopiowanie pliku! <br />';
  13. fclose($plik);
  14. }


no i problemem tu jest chyba ten koniec ścieżki oznaczony jako *.php , bo wyrzuca błąd:
Warning: fopen(../xxx/*.php): Failed to open stream: No such file or directory in C:\xampp\htdocs\rozdzial5\funkcja3.php on line 10

Czy ktoś mógłby coś podpowiedzieć, jak sobie z tym poradzić?
nospor
NO ale po co ci fopen? A potem jeszcze robisz preg_match na wyniku fopen co juz w ogole jest bez sensu. No mysl troszke...

Niemal na kazde pytanie odpowiedz padla juz w google, wiec zajrzyj tam od czasu do czasu tez, np tu
https://stackoverflow.com/questions/2578008...ing-php-scripts
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.