wyświetlanie echo pomiędzy stronami

0

Cześć, dopiero się uczę i mam problem z wyświetleniem $msg. Chce by $msg było wyświetlane w index.php po kliknięciu w submit i sprawdzeniu (w osobnym pliku register.php) czy jest email poprawny lub nie

posiadam plik index.php

<?php
	include 'core/int.php'; //  zawiera  $msg = ' ';  oraz  $db
 	include 'includes/overall/header.php'; // header, content
 	echo $msg; 
  ?>
 
<?php  include 'includes/overall/footer.php'; ?> // footer

plik register.php

<?php

include 'core/int.php'; // $db, $msg

	if(!empty($_POST['email']) && isset($_POST['email']) && !empty($_POST['email_r']) && isset($_POST['email_r'])) {

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

		$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/';

		if(preg_match($regex, $email)) {

                    $msg = 'poprawny email';			}

		else {

			$msg = 'niepoprawny email';
	
                       }

?>

0

Poczytaj o tym czym są funkcję i jak działa return.
Poza tym powinieneś odseparować warstwę logiki od prezentacji, będzie Ci łatwiej potem to ogarniać.

Jak widzę include header.php to od razu polecam użyć systemu szablonów (np Twig albo w sumie chyba już coraz słabiej rozwijany Smarty). Te includy też są raczej zbędne, zastosuj lepiej jakiś mechanizm autoloadingu.

Do walidacji emaila dot. składni jest gotowa metoda w php'ie, nie potrzebny regex.
http://php.net/manual/en/filter.examples.validation.php

0

OK, poczytam wiem, że return zwraca wartość ale jak go wykorzystać to wyświetlenia msg w index? - to co dotychczas mam : link

0
function isEmailValid($email){
    if(here_goes_validation_condition){
        return true;
    }
    else{
        return false
    }
}

(przykład konkretnie pod autora, sam bym inaczej napisał, ale chcę żeby autor to sobie zobrazował)
Właściwy komunikat tekstowy zwracaj już przy samym wyświetlaniu, nie mieszaj warstw.
Doczytaj do czego służy typ boolean.
A wykorzystać go należy tak

if(isEmailValid($_POST['costam'])) {
    echo 'poprawny'} 
else {
    echo 'niepoprawny';
}
0

no ok a potem do pliku index.php przesłać te echo jako zmienna w sesji?

0

ok zrobiłem tą funkcje w register i wszystko ładnie wyświetla tylko, że chce by wyświetlało mi w index a w register by sprawdzało i cofało do index z wyświetloną wiadomością np: 'sukces" pod input

0

no nic jeszcze popróbuję a jak nie da rady to chyba zrobie w osobnym pliku rejestracje i w osobnym logowanie

0

Twój projekt ma bardzo wiele złych założeń.

Nie rób plików register.php w których dajesz tylko kod https://github.com/piotr543543/test/blob/master/includes/widgets/register.php i robisz include'a.

To że teraz sam to jakoś ogarniasz - nie znaczy że za parę tygodni jak projekt Ci się rozrośnie będziesz nadal w stanie to ogarnąć. Poza tym inni programiści też chcą mieć czytelny kod do poczytania, a nie skakać od pliku do pliku. Dodatkowo ogarniając html + php w taki sposób jak to robisz teraz, pomyśl co będziesz musiał zrobić jak Ci się zmieni html albo np jakiś link. Będziesz musiał edytować masę plików i bardzo długo szukać co poszło nie tak. Ja widząc gdzieś echo w kodzie od razu wiem, że coś jest nie tak albo że da się to poprawić.

Składanie html'a z plików php bazując na include'ach to bardzo złe podejście. Jeśli chcesz lepsze to poczytaj o MVC, zastosuj jakiś mechanizm szablonów - twig/ew. smarty.... jeśli chcesz sam pisać, to podziel to na widoki, zrób jakiegoś renderera...

Poza tym jesli dopiero zaczynasz przygodę z programowaniem, to staraj się pisać funkcje, które będą robiły jedną rzecz i naucz się je wykorzystywać. A tak w skrócie wielki zasada wygląda tak

  1. Dostajesz request od uzytkownika
  2. Podejmujesz odpowiednią akcję (tutaj wchodzi mvc)
  3. Bazując na poprzednim kroku wyświetlasz widok/robisz przekierowanie.

W phpie można też stosować autoloading class- przez co nie będziesz musiał pisać po 100 razy include/require_once...

1 użytkowników online, w tym zalogowanych: 0, gości: 1