Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php]Jak sprawdzić poprawność skryptu z funkcją mail() na lokalnym serwerze ?
DanielFaraday
post 13.06.2015, 19:17:28
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.06.2015

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


Cześć,

PHP jest dla mnie dość świeżym tematem. Staram się ukończyć pewien prosty skrypt formularza, który jednocześnie jest moim pierwszym skryptem. Na logikę wszystko wydaje się być poprawne, jednak nie jestem pewien jak sprawdzić poprawność napisanego kodu (syntax) oraz samo działanie funkcji mail() lokalnie (np. XAMPP). Sam skrypt ma za zadanie :

1. Sprawdza, czy użytkownik wprowadził jakiekolwiek dane w pole.
2. Dokonuje walidacji, czy wprowadzone dane składają się na prawidłowy adres email.
3. Po kliknięciu 'submit' dane zostają wysłane na mój adres email (wiadomość mająca w body $email)
4. Jednocześnie skrypt łączy się w bezpieczny sposób z bazą danych mysql i dokonuje próby wprowadzenia danych (zapis adresu email do tabeli)
5. Użytkownik jest przekierowany na adres URL.
6. Skrypt zamyka połączenie z bazą danych mysql.

Mówiąc, że skrypt łączy się w bezpieczny sposób z bazą danych mysql mam na myśli to, że główny plik php zawiera np. "parse_ini_file('/config.ini');" przy odpowiedniej zmiennej i pobiera z tego pliku dane nt. dbname, username oraz password.

Pytania :

1. Jak sprawdzić ogólną poprawność napisanego kodu ?
2. Jak używając lokalnego serwera (np. program XAMPP) sprawdzić poprawność działania całego skryptu.
3. Jak mogę monitorować wykonanie całego skryptu krok po kroku ? (Przydatne w czasie troubleshoot'ingu)

IDE z którego korzystam to Sublime Text 2

Kod głównego skryptu PHP :

  1. <?php
  2.  
  3. //Define variables
  4. $email = $_POST['email'];
  5. $from = 'Landing page';
  6.  
  7. $myemail = parse_ini_file('/email_data.ini');
  8. $subject = parse_ini_file('/email_data.ini')
  9.  
  10. $message = 'New form submission - Email adress: $email';
  11.  
  12.  
  13. //Check if email was entered before submission
  14.  
  15. if (!$_POST['email']) {
  16. $errEmail = 'Please enter a valid email adress'
  17. }
  18.  
  19. // Validate e-mail
  20. if (!filter_var($email, FILTER_VALIDATE_EMAIL) === true) {
  21. echo("$email is not a valid email address");
  22. }
  23.  
  24. /* Send the message using mail() function */
  25. mail($myemail, $subject, $message);
  26.  
  27. /* Redirect visitor to the thank you page */
  28. header('Location: <a href="http://affiliatelink.com&#39%3b%29;" target="_blank">http://affiliatelink.com');</a>
  29. exit();
  30.  
  31. // ----MYSQL----
  32.  
  33. // Load configuration as an array.
  34. $config = parse_ini_file('/config.ini');
  35.  
  36. // Try and connect to the database
  37. $connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);
  38.  
  39. // If connection was not successful, handle the error
  40. if($connection === false) {
  41. echo('DB Error')
  42. header( "url=http://affiliatelink.com" );
  43. }
  44.  
  45. // attempt insert query execution
  46. $sql = "INSERT INTO persons (email_address) VALUES ('$email')";
  47. if(mysqli_query($link, $sql)){
  48. echo "Records added successfully.";
  49. }
  50.  
  51. // close connection
  52. mysqli_close($link);
  53. // ----END MYSQL----
  54. ?>


Uporządkowana i ładniejsza wersja kodu głównego skryptu PHP : http://ideone.com/jOG859

Zawartość pliku config.ini (przykładowa) :

[database]
username = root
password = 1234
dbname = mydb


Zawartość pliku email_data.ini (przykładowa) :

[email_data]
myemail = example@wp.pl
subject = Landing page form submission



Za wszelką pomoc będę wdzięczny smile.gif

D.
Go to the top of the page
+Quote Post
ctom
post 13.06.2015, 21:50:02
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(DanielFaraday @ 13.06.2015, 20:17:28 ) *
1. Jak sprawdzić ogólną poprawność napisanego kodu ?
2. Jak używając lokalnego serwera (np. program XAMPP) sprawdzić poprawność działania całego skryptu.
3. Jak mogę monitorować wykonanie całego skryptu krok po kroku ? (Przydatne w czasie troubleshoot'ingu)

IDE z którego korzystam to Sublime Text 2


1. przejrzyj co jest w linku który dałeś http://ideone.com/jOG859 - masz wypisane pod kodem błędy ;-)
2. SublimeText to edytor nie IDE - wybierz np. netbeans
3. "analizowanie krokowe" to debugowanie

funkcja mail() zwraca boolean - sprawdź czy wysłałeś maila zanim podziękujesz .
no i to przekierowanie - poczytaj o header() ... ps. wiesz, że to "kończy skyrpt" - a co z resztą ?



--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
DanielFaraday
post 13.06.2015, 22:11:39
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.06.2015

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


Cytat(ctom @ 13.06.2015, 22:50:02 ) *
1. przejrzyj co jest w linku który dałeś http://ideone.com/jOG859 - masz wypisane pod kodem błędy ;-)
2. SublimeText to edytor nie IDE - wybierz np. netbeans
3. "analizowanie krokowe" to debugowanie

funkcja mail() zwraca boolean - sprawdź czy wysłałeś maila zanim podziękujesz .
no i to przekierowanie - poczytaj o header() ... ps. wiesz, że to "kończy skyrpt" - a co z resztą ?


Dziękuję Tobie bardzo. Jestem w dość kiepskiej sytuacji materialnej, ten skrypt przyczyni się połowicznie do jej polepszenia. Dlatego też tak bardzo mi zależy na jego poprawnym działaniu. Chciałbym się zapytać, jak programista jest w stanie zrozumieć bardzo ogólnikowo napisane błędy ? Przepraszam, jeżeli nie wyraziłem się jasno. Trochę mi trudno mówić po polsku w takich specjalistycznych tematach. Często informacje są dosyć 'generic', nie znam słowa po polsku. Mało z nich rozumiem co się dzieje i dlaczego. Przykładowo na linijce 10 jest 'parse error', ale za żadne skarby nie jestem w stanie zrozumieć o co chodzi.

Czy mógłbyś mi wytłumaczyć czym wobec tego jest IDE ? Chyba zostałem wprowadzony w błąd przez użytkownika stack overflow, który wyraził się jasno, że Sublime text jest IDE. Mam lekki mętlik w głowie.

Przepraszam za tyle pytań, ale czy tzw. 'debugowanie' === 'troubleshooting' ?

Dziękuję jeszcze raz,

Danny
Go to the top of the page
+Quote Post
ctom
post 13.06.2015, 22:24:27
Post #4





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(DanielFaraday @ 13.06.2015, 23:11:39 ) *
Przykładowo na linijce 10 jest 'parse error', ale za żadne skarby nie jestem w stanie zrozumieć o co chodzi.

błąd brzmi : PHP Parse error: syntax error, unexpected '$message' (T_VARIABLE) in /home/X6b2es/prog.php on line 11
w skryptach php linię kończymy ; ( średnikiem)

wejdź netbeans.org zainstaluj sobie ( jest darmowy) .. pobaw się tym... na youtube obejrzyj kilka tutoriali a zobaczysz różnice ...

odnośnie SublimeText to może są fanatycy ale dla mnie to najwyżej można określić " is like IDE"


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Pyton_000
post 13.06.2015, 23:04:53
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie słuchaj głupot. SublimeText to Jest IDE. Minimalistyczne ale jest ponieważ instalując wtyczki dochodzisz do bardzo rozbudowanej aplikacji. A i bez tego ilość opcji sama w sobie jest pokaźna.
Go to the top of the page
+Quote Post
DanielFaraday
post 14.06.2015, 14:46:20
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.06.2015

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


Dziękuję za odpowiedzi. Netbeans'a właśnie ściągam. Mam lekki mętlik odnośnie programu, którym powiniennem się posługiwać, ale w końcu to tylko program. Nie czyni ze mnie automatycznie lepszego programisty. Mam jeszcze jedno pytanie, czy jak mam coś tego typu :

  1. $message = 'New form submission - Email adress: $email';


to czy musi to być zapisane jako zmienna ? W końcu $message będzie zawierało tekst, który nie będzie się zmieniał. Jedynie $email będzie się zmieniał w zależności od tego, jakie dane użytkownik będzie wpisywał. Nie powiniennem użyć jakiegoś 'define' ?

A odnośnie tego parse error, to tam był średnik smile.gif Może jakiegoś nawiasu brakuje ? Aj ten syntax...
Go to the top of the page
+Quote Post
Pyton_000
post 15.06.2015, 12:02:07
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie nie musi. Poza tym masz złe ' wstawione. Powinny być " jeśli chcesz żeby zmienna $email była zamieniona na wartość.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 4.06.2025 - 06:09