PHP i Smarty

0

Witam
To mój pierwszy post na forum proszę o wyrozumiałość mam problem z kodem PHP muszę go oddzielić od HTML przy pomocy Sparty jednak nie mam pomysłu jak to zrobić.

Sama rejestracja wygląda tak, nie wstawiam wszystkiego

<?php

	session_start();
	
	if (isset($_POST['email']))
	{
		//Udana walidacja? Załóżmy, że tak!
		$wszystko_OK=true;
		
                //Sprawdź poprawność nickname'a
		$nick = $_POST['nick'];
		
		//Sprawdzenie długości nicka
		if ((strlen($nick)<3) || (strlen($nick)>20))
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
		}
		
		if (ctype_alnum($nick)==false)
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
		}
		//sprawdzanie poprawnosci nazwiska 
                $surname = $_POST['surname'];
                //
                if (!preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśżźćń]+$/',$surname) )     
                 {
                        $wszystko_OK=false;
			$_SESSION['e_surname']="Błędne Nazwisko   ";
                 }
                 //sprawdzanie poprawnosci imie
                $name = $_POST['name'];
           
                 if (!preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśżźćń]+$/',$name) )     
                 {
                        $wszystko_OK=false;
			$_SESSION['e_name']="Błędne imię";
                 }
               
	
		//Zapamiętaj wprowadzone dane
		$_SESSION['fr_nick'] = $nick;
		$_SESSION['fr_name'] = $name;
        $_SESSION['fr_surname'] = $surname;
              
            
                
                if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
		
		require_once "connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);
		
		try 
		{
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
			if ($polaczenie->connect_errno!=0)
			{
				throw new Exception(mysqli_connect_errno());
			}
			else
			{
                            
				
	}
	
	
?>

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="utf-8">
    <title> ......</title>
    <link href="bootstrap.css" rel="stylesheet">
    <link href="style.css" rel="stylesheet">
   konta  -->
    
</head>
<body>

	
        <div class="jumbotron">
	<form method="post">
	<div class="form-register">
			
            name  : <br /> <input type="text" value="<?php
			if (isset($_SESSION['fr_name']))
			{
				echo $_SESSION['fr_name'];
				unset($_SESSION['fr_name']);
			}
		
                       ?>" name="name" /><br />
    
     
                        <?php
			if (isset($_SESSION['e_name']))
			{
				echo '<div class="error">'.$_SESSION['e_name'].'</div>';
				unset($_SESSION['e_name']);
			}
                        ?>
            
             
            
         surname  : <br /> <input type="text" value="<?php
			if (isset($_SESSION['fr_surname']))
			{
				echo $_SESSION['fr_surname'];
				unset($_SESSION['fr_surname']);
			}
		
                       ?>" name="surname" /><br />
         
          
                        <?php
                        if (isset($_SESSION['e_surname']))
                         {
                                 echo '<div class="error">'.$_SESSION['e_surname'].'</div>';
                                 unset($_SESSION['e_surname']);
                         }
                        ?>
            
            
              Nick: <br /> <input type="text" value="<?php
			if (isset($_SESSION['fr_nick']))
			{
				echo $_SESSION['fr_nick'];
				unset($_SESSION['fr_nick']);
			}
		
                       ?>" name="nick" /><br />
         
            
            	<?php
			if (isset($_SESSION['e_nick']))
			{
				echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
				unset($_SESSION['e_nick']);
			}
		?>
          
            
             
       
	
    <footer class="footer">
		<p> ....... </p>
    </footer>
    </div> <!-- /container -->
</body>
</html>

PHP/Smarty

tworzę plik rejestracja.html

<form method="post" action="register_in.php">
<div class="#">
```html
	<center><label>Login</label></center>
<input type="text" name="login" class="form-control"/>
<center>{$smarty.session.fr_nick}</center>
</div>
<div class="#">
<center><label>Imię</label></center>
<input type="text" name="name" class="form-control"/>
<center>{$smarty.session.fr_name2}</center>
</div>
<div class="#">
<center><label>Nazwisko</label></center>
<input type="text" name="surname" class="form-control"/>
<center>{$smarty.session.fr_surname}</center>
</form>
</div>

rejestracja.php

<?php

session_start();

require_once('lib/Smarty.class.php');
$smarty = new Smarty();
$smarty -> template_dir = 'html';
$smarty -> compile_dir = 'temp';
$smarty -> cache_dir = 'cache';	
			
			if (isset($_SESSION['fr_nick']))
			{
				echo $_SESSION['fr_nick'];
				unset($_SESSION['fr_nick']);
			}         
			if (isset($_SESSION['fr_surname']))
			{
				echo $_SESSION['fr_surname'];
				unset($_SESSION['fr_surname']);
			}
			
			if (isset($_SESSION['fr_name']))
			{
				echo $_SESSION['fr_name'];
				unset($_SESSION['fr_name']);
			}
			
			

			
$smarty -> display('register.html');

?>

rejestracja_in.php

<?php

	session_start();
	
	//walidacja
	if (isset($_POST['e-mail'])) // wystarczy jedna zmienna, bo formularz jest wysyłany w całości
	{
		//udana walidacja, ustawiamy flage
		$wszystko_OK=true;
		
	         //Sprawdź poprawność nickname'a
		$nick = $_POST['nick'];
		
		//Sprawdzenie długości nicka
		if ((strlen($nick)<3) || (strlen($nick)>20))
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
		}
		
		if (ctype_alnum($nick)==false)
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
		}
		//sprawdzanie poprawnosci nazwiska 
                $surname = $_POST['surname'];
                //
                if (!preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśżźćń]+$/',$surname) )     
                 {
                        $wszystko_OK=false;
			$_SESSION['e_surname']="Błędne Nazwisko   ";
                 }
                 //sprawdzanie poprawnosci imie
                $name = $_POST['name'];
           
                 if (!preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśżźćń]+$/',$name) )     
                 {
                        $wszystko_OK=false;
			$_SESSION['e_name']="Błędne imię";
                 }
                
	
	
		//Zapamiętaj wprowadzone dane
		$_SESSION['fr_nick'] = $nick;
		$_SESSION['fr_name'] = $name;
        $_SESSION['fr_surname'] = $surname;
              

	
	
	
	
	
	
		if (isset($_SESSION['e_nick']))
			{
				echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
				unset($_SESSION['e_nick']);
			}
           
			if (isset($_SESSION['e_surname']))
            {
                echo '<div class="error">'.$_SESSION['e_surname'].'</div>';
                unset($_SESSION['e_surname']);
            }
			
			if (isset($_SESSION['e_name']))
			{
				echo '<div class="error">'.$_SESSION['e_name'].'</div>';
				unset($_SESSION['e_name']);
			}
	
			


	?>
	
	
	
	
	
	
0

Czemu musisz? Żeby oddzielić musisz przepisać cały kod stosując MVC.

0
<center>{$smarty.session.fr_nick}</center>

Pomijając to center (urwałeś się z roku 1994 czy coś?) to w ten sposób robisz sobie dziurę XSS.

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