require_once i nie zamknięty znacznik ?>

0

Witam.
Stworzyłem pewną stronę i mam na niej dziwny błąd. mam plik php, który podpinam później w kodzie za pomocę require_once.

plik.php

 <?php

function conn_to_db()
{
   $conn = mysql_connect ('localhost', 'root', 'Vito1984') OR die ('Could not connect to MySQL: ' . mysql_error());
    
	return $conn;
}
function select_db($conn)
{
    
   $baza = mysql_select_db('psg', $conn) OR die('Could not select the database: ' . mysql_error() );
  
	return $baza;
}

Jak zapewne zwróciliście uwagę. Jest tam nie zamknięty człon <?php - brak znacznika ?>.

W trakcie pisania kodu , a właściwie przy dodawaniu nowych funkcji po zakończeniu projektu, zauważyłem ten błąd powyżej i go poprawiłem.
Spowodowało to , że strona przestała funkcjonować poprawnie!!! Pierwszy raz spotkałem się z czymś takim, że strona(projekt) działa poprawnie tylko z błędem!.

Plik.php jest podpinanu w wielu innych plikach .php strony. Ale to nie ma znaczenia, dlatego stosuje require_once, aby się nie dublował kod.

Przyczyna błędnie działającej strony (to co zdążyłem zauważyć) to np. jak funkcja jquery $.post zwraca wartość (wynik działania)
np (częściowy kod).

              $.post('phpmailer.php', {
				parametr : 'rezerwacja',
				(...)
			}, function(output1) {				
				if (output1 == '1') { coś tam}
             });

to warunek nie jest spełniony gdy są ' lub " . Natomiast działa gdy jest sama liczna, bez ',", czyli jest "widziana" jako zmienna numeryczna. Zresztą nie działa nawet jak są " , ' i np. jest warunek if (output1 == 'OKOK').
Jeżeli nie ma tego znacznika w pliku plik.php to wszystko działa poprawnie, nie ważne czy jest '," , czy ich nie ma... Nie jest to chyba problem, że zmienne są numeryczne (1,2,3....) , które w programie są jako stringi, bo stringi (OKOK) też nie działają poprawnie, gdy jest zamknięty znacznik ?>

Ja się poddaję, nie wiem co źle zrobiłem. Ale chciałbym jakoś uporać się z problemem i zamknąć tego ?>, aby kiedyś nie pojawił się inny problem !

Dzięki

1

brak znacznika zamykającego dla tagu <?php nie jest błędem. Wprost przeciwnie usilne stawianie ?> może doprowadzić do tego, że zamiast postawić ?> zrobisz chociażby
?>[spacja] co w pewnych warunkach może zepsuć działanie kodu.Nie widzę całości kodu ale prawdopodobnie błąd tkwi w dość prostej rzeczy.
Każdy "napis" czyli string kończy sie znakiem końca stringa.
powoduje to następującą rzecz.
Jeśli zmienna jest numeryczną znaku końca nie ma
Jeśli jest stringiem znak końca jest
i wywala Ci błąd.
**?>[spacja] ** na 99% masz ten przypadek i się coś psuje.

0
Piotrekdp napisał(a):

**?>[spacja] ** na 99% masz ten przypadek i się coś psuje.

powiem więcej jest coś takiego ?>[enter][spacja][enter] ;)
jeżeli to jest problem , to będzie po temacie. Zabieram się za sprawdzenie i napiszę później o wynikach! Dzięki i tak!

a jeszcze pytanie... to jeżeli plik.php ma tylko sam kod php, żadnego html czy js.... to nie trzeba go koniecznie zamykać za pomocą ?> ???

0

Zamykanie tagu php tam gdzie nie jest to niezbędne jest niezalecane. W plikach z czystym php nawet nie zamykaj.

0

ok, to działa, dzięki.
Mam jeszcze pytanie, co oznacza "." w ścieżkach do podkatalogów, np. "./var/test/.....". to oznacza aktualny katalog? Nie można po prostu napisać "var/test/..." ?

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