错误后如何以寄存器形式保存值?

时间:2015-09-10 12:02:26

标签: php

我的代码与正确的数据完美配合。但是当字段中的值无效时,它会在页面register.php上显示带有链接的错误消息,当我单击此错误时,它会重定向到注册表单,但是有空表单,所有值必须再次插入。我希望错误后显示有效值,而不是无效。

代码:

<html>
    <head>
        
        <?php include 'connect.php'; ?>
        <?php include 'functions.php'; ?>  
        <meta charset="UTF-8">
        <title>TechnoLab-Registracija</title>
        <link rel='stylesheet' href='style.css' type='text/css' />
        <?php include 'header.php'; ?>
        
    </head>
    <body>
        <div id="container">
        
             <div id="left">
                <?php include "kategorije.php";?>
            </div>
            
            <div id="right">
                <?php include "loggedin.php";?> 
            </div>
      
       <form method="post" id='registerform'> 
           <br/>
        <?php
if(!empty($_POST['username']) && !empty($_POST['password']) )
{
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $password = md5(mysqli_real_escape_string($con, $_POST['password']));
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $confirm_email = mysqli_real_escape_string($con, $_POST['confirm_email']);
    $ime = mysqli_real_escape_string($con, ucfirst($_POST['ime']));
    $prezime = mysqli_real_escape_string($con, ucfirst($_POST['prezime']));
    $oib = mysqli_real_escape_string($con, $_POST['oib']);
    $ulica = mysqli_real_escape_string($con, $_POST['ulica']);
    $mjesto = mysqli_real_escape_string($con, $_POST['mjesto']);
    
   
    
    $checkusername = mysqli_query($con, "SELECT * FROM korisnici WHERE Username = '".$username."' OR Oib = '".$oib."'");
   
     if(mysqli_num_rows($checkusername) == 1)
     {
       
        echo "&nbsp<p><a class='one' href=\"register.php\">Unesite drugo korisničko ime!</p>";
        exit();
     }
    
    $checkusernamelenght = checkusernamelenght($username);
       if(!$checkusernamelenght){
           echo '&nbsp<p><a class="one" href="register.php">Korisničko ime minimalno 4 znaka i ne smije sadržavati razmake između slova!</a></p>';
           exit();
       }
       
    if (preg_match("/^.*(?=.{6,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $_POST['password']) === 0){
        echo '&nbsp<p><a class="one" href="register.php">Lozinka mora imati barem 6 znakova i sadržavati mala i velika slova te broj!</a></p>';
        exit();
        }
       
    $checkemail = mysqli_query($con, "SELECT * FROM korisnici WHERE Email = '".$email."'");
   
    if(mysqli_num_rows($checkemail) == 1)
     {
        echo "&nbsp<p><a class='one' href=\"register.php\">Unesite drugu email adresu!</p>";
        exit();
     }
    if ($confirm_email!=$email){
             echo "&nbsp<p><a class='one' href=\"register.php\">Vaše email adrese se ne podudaraju!</a></p>" ;
             exit();
         }
         
         
    $validateEmail = validateEmail($email);
      if(!$validateEmail){
          echo "&nbsp<p><a class='one' href=\"register.php\">Unesite ispravan format emaila!</a></p>";
          exit();
      }
      
     
    $checkOib = checkOib($oib);
    if(!$checkOib){
        echo "&nbsp<p><a class='one' href=\"register.php\">Unesite ispravan OIB !</p>";
        exit();
    }
      
    else{
        $registerquery = mysqli_query($con, "INSERT INTO korisnici VALUES('', '$username', '$password', '$email', '$confirm_email', '$ime', '$prezime', '$oib', '$ulica', '$mjesto', 'user')");
        if($registerquery)
        {
            header('location: index');
           
        }
    }       
    }
   
 
else
{
    ?>
<br/>
            <div id="reg">
       
        <label for="username">Korisničko ime:</label><input type="text" name="username" required /><br />
        <label for="password">Lozinka:</label><input type="password" name="password" maxlength="20" required /><br />
        <label for="email">Email:</label><input type="text" name="email" required /><br />
        <label for="confirm_email">Potvrdi email:</label><input type="text" name="confirm_email" required /><br />
        <label for="ime">Ime:</label><input type="text" name="ime" required /><br />
        <label for="prezime">Prezime:</label><input type="text" name="prezime" required /><br />
        <label for="oib">OIB:</label><input type="text" name="oib"  required /><br />
        <label for="ulica">Ulica i kućni broj:</label><input type="text" name="ulica" required /><br />
        <label for="mjesto">Mjesto i poštanski broj:</label><input type="text" name="mjesto" required /><br />
        <br/>
        <input type="submit" name="register" id="register" value="Registracija" />
        
            </div>
       </form>
        <?php
        }
        ?>
    
   
        </div>
        
        
        <?php include "footer.php";?>
    </body>
</html>

是否可以只使用php或必须使用javascript或其他内容?

我在论坛上搜索过并试过这个和类似的代码,但它不起作用。

<input type="text" name="login" value="<?php if(isset($_POST['login'])){ echo $_POST['login'];}?>">

我感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

由于重定向,$_POST['<value>']无法正常工作,因此&#34; drop&#34; $_POST数据。

实现所需功能的一种方法是在提交表单时使用$_SESSION,您可以将值存储在$_SESSION中,或者您可能更愿意仅在存储时使用$_SESSION。是错误。)

您可以像$_SESSION['name'] = $_POST['name']; 那样存储/保存值:

$_SESSION['<value>']

然后只需检查$_POST['<value>']而不是<input type="text" name="login" value="<?php if(isset($_SESSION['login'])){ echo $_SESSION['login'];}?>">

session_start();

您必须记住在每个要使用会话的页面顶部开始会话。

$_SESSION

需要注意的一点是,在完成会话后,您应该取消设置会话值,这样可以避免重复使用旧数据。

您可以通过多种方式使用project -a -- a1.c a1.h a2.c a2.h -b -- b1.c b1.h b2.c b2.h -c -- c1.c c1.h c2.c c2.h -test.c 来实现您想要的目标,以便找到最适合您的方式。

你可以read more about sessions here