Wątek przeniesiony 2017-07-18 09:08 z PHP przez ŁF.

Niedziałający JavaScript w skrypcie PHP

0

Witam.

Napisałem sobie testową stronkę z skryptem rejestracji wysyłającym dane do bazy danych.Niestety moje postępy stanęły w momencie gdy po wrzuceniu na serwer zewnętrzny skrypt a dokładnie część javascript wywala błąd wypisując zawartość skryptu w przeglądarce jako tekst zamiast poprawnie go wykonać a o to kod:

<?php
	include('config.php');
	
	if(isset($_POST['submit']) && $_POST['submit'] == 'Zarejestruj'){
		$username = mysqli_real_escape_string($connect, $_POST["username"]);
		$password = mysqli_real_escape_string($connect, $_POST["password"]);
		$rl_name = mysqli_real_escape_string($connect, $_POST["rl_name"]);
		$del_password = mysqli_real_escape_string($connect, $_POST["del_pass"]);
		$email = mysqli_real_escape_string($connect, $_POST["email"]);
		
		$sql = "INSERT INTO account SET login = '" . $username . "', password = PASSWORD('" . $password . "'), real_name = '" . $rl_name . "', social_id = '" . $del_password . "', email = '" . $email . "'";
		
		$result = mysqli_query($connect, $sql);
		
		if($result){
			echo <script language="javascript">;
			echo 'alert("Twoje konto zostało utworzone!")';
			echo </script>;
		} else {
			echo '<script type = "text/javascript">alert("Ten login jest już zajęty, spróbuj innego."); </script>';
		}
	}
?>

<html>
	<head>
		 <meta charset="UTF-8">
		
		<title>Testowa strona</title>
		
		<link rel="stylesheet" type="text/css" href="./styles/css.css">
	</head>
	<body>
		<div id="left-bar-menu">
			<ul>
				<li><a href="index.php">Strona</a>
				<li><a href="ladder.html">Ranking</a>
				<li><a href="itemshop.html">Item Shop</a>
				<li><a href="rules.html">Regulamin</a>
				<li><a href="forum.html">Forum</a>
			</ul>
		</div>

		<div id="server-status">
			Liczba graczy online: <br>
			38265206202<br>
		</div>
		<div id="right-bar-menu">
			<form>
				Login:<br>
				<input type="text" name="login"><br>
				Haslo:<br>
				<input type="text" name="password"><br>
				<input type="submit" value="Zaloguj">
			</form>
		</div>
		<div id="news">
			<form action="Register.php" method="post">
			<table>
				<tr>
					<td>Login:</td>
					<td><input title="Login" type="text" name="username" minlength="6"></td>
				</tr>
				<tr>
					<td>Hasło:</td>
					<td><input title="Password" type="password" name="password"></td>
				</tr>
				<tr>
					<td>Kod usunięcia postaci:</td>
					<td><input title="Kod usunięcia" type="password" name="del_pass" maxlength="7"></td>
				</tr> 
				<tr>
					<td>E-mail:</td>
					<td><input title="E-mail" type="email" name="email"></td>
				</tr>
				<tr>
					<td>Twoje imię:</td>
					<td><input title="Imie" type="text" name=" rl_name"></td>
				</tr>
				<tr align="center">
					<td colspan="2">
						<input title="" type="submit" name="submit" value="Zarejestruj">
						<input title="" type="reset" value="Wyczyść">
					</td>
				</tr>
			</table>
			</form>
		</div>
		<div id="top20">
		TOP 20
			<ul>
			<li>Kutas1

			</ul>
	</body>
</html>

strona dostępna jest pod: http://hexilus.pl/Register.php

Przy obecnej wersji kodu na samej górze otrzymuję ; echo 'alert("Twoje konto zostało utworzone!")'; echo ; } else { echo ''; } } ?> podczas gdy na lokalnym hoście za pomocą xampp wszystko działa jak należy. Na serwerze zainstalowane jest apache wraz z php7.0 i wszystkimi rozszerzeniami.

Wie ktoś może dlaczego w taki sposób wywala tylko na serwerze ten kod? Brak jakiejś implementacji czy spowodowane czymś innym?

Pozdrawiam.

0

Masz źle skonfigurowany serwer. Prawdopodobnie masz Apache i brakuje Ci modułu do php.
https://stackoverflow.com/a/30772294/5515745

Tak nawiasem mówiąc przeczytaj co to SQL Injection, bo Ci jakiś śmieszek całą baze usunie.

0

Po co SQL Injection jak można się śmiało logować:
http://hexilus.pl/config.php
:)

0
			echo <script language="javascript">;
			echo 'alert("Twoje konto zostało utworzone!")';
			echo </script>;

To PHP obsługuje tagi script?

0

Skrypt już poprawiłem bo źle ' ' miałem napisane a instalacja moda do apache naprawiła błąd dzięki!
@Markuz w taki sposób jak zmienne są zapisane w php to osoba z zewnątrz jakoś w łatwy sposób może je wyciągnąć? Z tego co wiem php wykonuję się po stronie serwera więc nikt bez ftp nie powinien mieć dostępu :| Jest jakiś lepszy sposób na zabezpieczenie danych? (w pliku i tak na obecną chwilę są tylko dane do konta, które ma dostęp do bazy tylko lokalnie).

0

@Bałwan200 Teoretycznie nie, w praktyce sam widzisz jak jest. Nie ma lepszego sposobu - trzeba tylko uważać, jak do bazy jest dostęp tylko lokalnie to powinno być bezpiecznie.

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