Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

γεια σας παιδιά λοιπόν φτιάχνω μια σελίδα admin για ένα protject μου και θέλω κάνω το εξής όταν πάω στο link πχ. admin/selida.php (η οποία έχει κάποια πράγματα που εμφανίζω από την βάση μου) να κάνει redirect σε μια login page που χω φτιάξει και αφού το login είναι επιτυχές να ξανά επιστρέφει στην selida.php

 

έχετε καμιά ιδέα??

 

παρακάτω ο κώδικας της login page

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>

 
        <link rel="stylesheet" href="css/style.css">

</head>

  <body>
	 
	 
		 
	 
	 
	 
	 
	 <div class="login-form">
	 
<form action="" method="post" name="Login_Form">
  <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" class="Table">
    <?php if(isset($msg)){?>
    <tr>
      <td colspan="2" align="center" valign="top"><?php echo $msg;?></td>
    </tr>
    <?php } ?>
    <tr>
      <td colspan="2" align="left" valign="top"><h3>Login</h3></td>
    </tr>
   
	<tr>
	  <td align="right" valign="top">Username</td>
      <td><input name="Username" type="text" class="Input"> <i class="fa fa-user"></i></td>
	  
    </tr></div>
   <tr>
      <td align="right">Password</td>
      <td><input name="Password" type="password" class="Input"><i class="fa fa-lock"></i></td>
	  
    </tr></div>
    <tr>
      <td> </td>
	    <span class="alert">Invalid Credentials</span>
      <td><input name="Submit" type="submit" value="Login" class="log-btn"></td>
    </tr>
  </table>
</form>
</div>


<?php session_start(); /* Starts the session */
	
	/* Check Login form submitted */	
	if(isset($_POST['Submit'])){
		/* Define username and associated password array */
		$logins = array('Alex' => '123456','username1' => 'password1','username2' => 'password2');
		
		/* Check and assign submitted Username and Password to new variable */
		$Username = isset($_POST['Username']) ? $_POST['Username'] : '';
		$Password = isset($_POST['Password']) ? $_POST['Password'] : '';
		
		/* Check Username and Password existence in defined array */		
		if (isset($logins[$Username]) && $logins[$Username] == $Password){
			/* Success: Set session variables and redirect to Protected page  */
			$_SESSION['UserData']['Username']=$logins[$Username];
			
			header("location:seida.php");
			exit;
		} else {
			/*Unsuccessful attempt: Set error message */
			$msg="<span style='color:red'>Invalid Login Details</span>";
		}
	}
?>

</body>
</html>
  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Θα ξεκινήσεις την php στην αρχή του κώδικα της σελίδας και θα βάλεις να γίνεται έλεγχος αν έχει γίνει το login. 

Αν έχει γίνει το login τότε θα εμφανίσεις κανονικά αυτά που θέλεις να εμφανίσεις αλλιώς θα κάνεις redirect με κάτι σαν αυτό:

header("location:login_page.php");

και μετά από εκεί αν γίνεται το login επιτυχώς τότε θα βάλεις 

header("location:selida.php");

Άσχετο αλλά έχεις ένα λάθος στον κώδικά σου γράφει seida.php αντί για selida.php

Δημοσ.

τον έλεγχο πως θα τον κάνω δηλαδη τι κωδικά θα γράψω?? 

 

Υ.Γ (χαχαα η selida.php δεν είναι το πραγματικό url!! δεν το έγραψα για ευνοήτους λογούς) 

Δημοσ.


<?php

session_start();

if(isset($_SESSION['UserData']['Username'])){
header("location: selida.php");
//redirect σε περίπτωση που έχει δημιουργηθεί το $_SESSION['UserData']['Username'] που όπως βλέπω το δημιουργείς μόνο στην περίπτωση που γίνει login...
//διαφορετικά μπορείς να δημιουργήσεις μια άλλη $_SESSION μεταβλητή πχ με όνο "LOGIN_CHECK" και να παίρνει τιμή
//TRUE όταν γίνεται Login και FALSE στην αντίθετη περίπτωση και να κάνεις έλεγχο με αυτό
}else{
echo "Incorrect login!" //ή ότι άλλο θέλεις όπως για παράδειγμα η login form ξανά.
}

 

Δημοσ.

οκ για να τα μαζέψουμε στη selida .php ( η οποία είναι αυτή που εμφανίζω κάποια πράγματα) θα βάλω πάνω 

 

header("location:login_page.php");

και μετά όποτε όταν ένας πάει να μπει στην selida.php αυτή θα τον πετάει στην login_page.php οποτε εγω στην σελιδα 
login_page.php θα χώσω αυτόν τον κώδικα

session_start();

if(isset($_SESSION['UserData']['Username'])){
     header("location: selida.php"); 
//redirect σε περίπτωση που έχει δημιουργηθεί το $_SESSION['UserData']['Username'] που όπως βλέπω το δημιουργείς μόνο στην περίπτωση που γίνει login... 
//διαφορετικά μπορείς να δημιουργήσεις μια άλλη $_SESSION μεταβλητή πχ με όνο "LOGIN_CHECK" και να παίρνει τιμή 
//TRUE όταν γίνεται Login και FALSE στην αντίθετη περίπτωση και να κάνεις έλεγχο με αυτό
}else{
     echo "Incorrect login!" //ή ότι άλλο θέλεις όπως για παράδειγμα η login form ξανά.
}

??????

Δημοσ.

Νομίζω ότι έχεις μπερδευτεί αρκετά. 

 

Με βάση τον κώδικά που έχεις θα κάνεις αυτό:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>

 
        <link rel="stylesheet" href="css/style.css">

</head>

  <body>
	 
	 
		 
	 
	 
	 
	 
	 <div class="login-form">
	 
<form action="" method="post" name="Login_Form">
  <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" class="Table">
    <?php if(isset($msg)){?>
    <tr>
      <td colspan="2" align="center" valign="top"><?php echo $msg;?></td>
    </tr>
    <?php } ?>
    <tr>
      <td colspan="2" align="left" valign="top"><h3>Login</h3></td>
    </tr>
   
	<tr>
	  <td align="right" valign="top">Username</td>
      <td><input name="Username" type="text" class="Input"> <i class="fa fa-user"></i></td>
	  
    </tr></div>
   <tr>
      <td align="right">Password</td>
      <td><input name="Password" type="password" class="Input"><i class="fa fa-lock"></i></td>
	  
    </tr></div>
    <tr>
      <td> </td>
	    <span class="alert">Invalid Credentials</span>
      <td><input name="Submit" type="submit" value="Login" class="log-btn"></td>
    </tr>
  </table>
</form>
</div>


<?php session_start(); /* Starts the session */
	
	/* Check Login form submitted */	
	if(isset($_POST['Submit'])){
		/* Define username and associated password array */
		$logins = array('Alex' => '123456','username1' => 'password1','username2' => 'password2');
		
		/* Check and assign submitted Username and Password to new variable */
		$Username = isset($_POST['Username']) ? $_POST['Username'] : '';
		$Password = isset($_POST['Password']) ? $_POST['Password'] : '';
		
		/* Check Username and Password existence in defined array */		
		if (isset($logins[$Username]) && $logins[$Username] == $Password){
			/* Success: Set session variables and redirect to Protected page  */
			$_SESSION['UserData']['Username']=$logins[$Username];
			$_SESSION['UserData']['Login_check'] = TRUE;//Αυτό πρόσθεσα.
			header("location:seida.php");
			exit;
		} else {
			/*Unsuccessful attempt: Set error message */
			$msg="<span style='color:red'>Invalid Login Details</span>";
		}
	}
?>

</body>
</html>

μετά στη selida.php θα κάνεις:

<?php
   session_start();

   if(isset($_SESSION['UserData']['Login_check'])){
        //ότι θέλει να βλέπει αυτός που έκανε login
   }else{
       header("location: login_page.php"); //όπου login_page.php αυτός ο κώδικας που μας έδωσες παραπάνω.
   }

?>

Τέλος, τα δεδομένα του πίνακα $logins[] από που τα αντλείς; 

Δημοσ.

λοιπόν πάμε λίγο από αρχή γιατί σας μπέρδεψα-μπερδεύτηκα και γω

ένα ένα έχω 2 σελίδες στον φάκελο admin το index.php το οποίο έχει αυτό τον κωδικά μέσα

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>

 
        <link rel="stylesheet" href="css/style.css">

</head>

  <body>
	 
	 
		 
	 
	 
	 
	 
	 <div class="login-form">
	 
<form action="" method="post" name="Login_Form">
  <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" class="Table">
    <?php if(isset($msg)){?>
    <tr>
      <td colspan="2" align="center" valign="top"><?php echo $msg;?></td>
    </tr>
    <?php } ?>
    <tr>
      <td colspan="2" align="left" valign="top"><h3>Login</h3></td>
    </tr>
   
	<tr>
	  <td align="right" valign="top">Username</td>
      <td><input name="Username" type="text" class="Input"> <i class="fa fa-user"></i></td>
	  
    </tr></div>
   <tr>
      <td align="right">Password</td>
      <td><input name="Password" type="password" class="Input"><i class="fa fa-lock"></i></td>
	  
    </tr></div>
    <tr>
      <td> </td>
	    <span class="alert">Invalid Credentials</span>
      <td><input name="Submit" type="submit" value="Login" class="log-btn"></td>
    </tr>
  </table>
</form>
</div>




      





<?php 






session_start(); /* Starts the session */
	
	/* Check Login form submitted */	
	if(isset($_POST['Submit'])){
		/* Define username and associated password array */
		$logins = array('Alex' => '123456','username1' => 'password1','username2' => 'password2');
		
		/* Check and assign submitted Username and Password to new variable */
		$Username = isset($_POST['Username']) ? $_POST['Username'] : '';
		$Password = isset($_POST['Password']) ? $_POST['Password'] : '';
		
		/* Check Username and Password existence in defined array */		
		if (isset($logins[$Username]) && $logins[$Username] == $Password){
			/* Success: Set session variables and redirect to Protected page  */
			$_SESSION['UserData']['Username']=$logins[$Username];
			$_SESSION['UserData']['Login_check'] = TRUE;//Αυτό πρόσθεσα.
			header("location:form.php");
			
			exit;
		} else {
			/*Unsuccessful attempt: Set error message */
			$msg="<span style='color:red'>Invalid Login Details</span>";
		}
	}
?>

</body>
</html>

και την σελίδα form.php η οποία έχει αυτό τον κωδικά μέσα




<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8">

<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
<link rel="stylesheet" type="text/css" href="css/jquery.dataTables.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
   <script type="text/javascript" language="javascript" src="js/myfuction.js"></script
<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" class="init">


$(document).ready(function() {
$('#example').dataTable( {
 "aProcessing": true,
 "aServerSide": true,
"ajax": "server-response.php",
} );
} );

</script>





</head>

 
<h3>Donwload as:   <a href="downloadexcel.php"><img src="./images/excel.png" alt="Donwload as EXCEL" style="width:40px;height:40px;"></a>
 <a href="../downloadpdf.php"><img src="./images/zip.png" alt="Donwload as ZIP" style="width:40px;height:40px;"></a><br>
 <h3>Delete All Entries and PDF File: <a href="#" onclick="javascript:myFunction();"> <img src="./images/delete.png" alt="Delete All" style="width:40px;height:40px;"></a></h3>
<body class="dt-example">
<table id="example" class="display table-striped" cellspacing="0" width="100%">
<thead>
<tr>
<th>uniquenessId</th>
<th>fullname</th>
<th>Academic_Title</th>
<th>Select_the_Area_of_Your_Paper</th>
<th>fileToUpload</th>
<th>publication_date</th>
<th>Address1</th>
<th>email</th>
<th>Authors_of_the_Paper</th>
<th>Title_of_the_Paper</th>
<th>Emails_of_all_the_Authors</th>
<th>Abstract</th>
<th>Keywords_of_your_Paper</th>
<th>Title_of_Special_Session</th>
</tr>
</thead>
</table>




</body>
</html>

όταν μπαίνει ο χρήστης στον φάκελο admin των βάζω κάνει login (στο index.php) και πάει στην σελίδα form.php!!!

λοιπόν τώρα τι θέλω εγώ: αν ο χρήστης πάει και γράψει admin/form.php δεν μπαίνει πότε στο index.php( που είναι η φόρμα για το login) συνεπώς εγώ εκεί θέλω να το φτιάξω κάπως όταν πχ πατάει ο άλλος admin/form.php "να του λέει ρε μάγκα που πας βάλε κωδικό"!!!

 


δεν ξέρω αν με πιάνεις??

οκ ο τρόπος σου φαίνεται να λειτουργεί 
ευχαριστώ φίλε για το χρόνο σου να σαι καλά μόλις το τελειώσω θα το ανεβάσω μπορεί να φανεί σε κάποιον χρήσιμο ουσιαστικά φτιάχνω κάτι σας αυτό  http://www.jotform.com/

Δημοσ.

Οπότε σωστά κατάλαβα. Αυτό που σου είπα ήταν σωστό (εγώ πάντως έτσι το κάνω). ;)

 

Καλή σου επιτυχία στο εγχείρημά σου! :)

 

Επίσης θα σου πρότεινα τα "<script>" σου να τα βάλεις όλα πριν το body για μεγαλύτερη ταχύτητα. 

Δημοσ.

φίλε γεια σου και πάλι έχω διορθώσει αρκετά πράγματα στο project και η βοήθεια σου πολύτιμη έχω ακόμα μια ερώτηση θέλω να φτιάξω κάτι άλλα οι γνώσεις μου δεν με βοηθάν για να το καταφέρω οπότε αν ξέρεις κάτι.

 

Λοιπόν έχω βάλει να php αρχείο που κατεβάζεις τα έγγραφα (pdf) όλα σε ένα zip κομπλέ αυτό!! 

Τι γίνεται όμως αν θέλω να του πω εγώ πια θα κατεβάσει πια θα ζιπαρει προς κατέβασμα (βρήκα κωδικά που του λες εσύ ξέρεις θέλω το 1,2,3,6 κτλ άλλα θέλω αυτό να το κάνει ο χρήστης όχι εγώ)??  

 

σκέφτηκα δηλαδή να πατάει ο άλλος το κουμπί που του χω για download και να εμφανίζει μια φόρμα που θα του λέει να βάλει αριθμό πχ  να κατεβάσει από το

aaa-010 μέχρι το aaa-020 γίνεται κάτι τέτοιο??

Δημοσ.

Τα αρχεία σου έχουν ονόματα και κάθε ένα από αυτά μοναδικό όνομα.

Πέρνα τα ονόματα των αρχείων σε ένα array και μετά δώσε στον χρήστη τη δυνατότητα να επιλέξει όλα ή ένα ένα τα pdf ξεχωριστά και με βάση ποια επέλεξε (πχ με checkboxes) τότε θα βάλεις αυτά μέσα στο zip.

 

Τώρα χωρίς να μας δείξεις τον κώδικά σου... δύσκολα να σε βοηθήσουμε διαφορετικά. 

Δημοσ.

Λοιπόν θα βάλω τον κώδικα το πρωί το θέμα είναι ότι αυτή η λειτουργία που θέλω να κάνω είναι σε επίπεδο admin δηλαδή πχ: ο χρήστης ανεβάζει μέσο της φόρμας ένα αρχειο, ένας άλλος χρήστης άλλο ένα και πάει λέγοντας.τωρα ο admin μπαίνει στο διαχειριστικό περιβάλλον βλέπει τι έχουν ανεβάσει στο φάκελο και θέλει να τα κατεβάσει οκ μέχρι εδω εχω φτιάξει με php λειτουργία να τα κατεβάζει όλα! Μετά μπαίνουν άλλοι 20 χρήστες ανεβάζουν αλλά 20 pdf εγώ θέλω να φτιαξω κάτι (χωρίς checkbox) το οποίο να λέει επέλεξε από ποιον αριθμό και κάτω θες να κατεβάσεις τα αρχεία! Δεν με νοιάζει να του λέω πχ από τα 20 κατέβασε το 16,17,18. Θέλω να του λέω από το 10 και κάτω κατέβασε τα όλα!!

 

Ελπίζω να μην σας μπερδεψα δεν ξέρω καν αν γίνεται αυτό που σκέφτομαι ούτε βασικά το χω δει κάπου!!

Δημοσ.

Είναι ακόμα πιο εύκολο και πάλι με τον πίνακα που σου είπα προηγούμενος.

 

Π.x. εσύ έχεις κατεβάσει τα 10 από τα αρχεία που υπάρχουν και πλέον είναι 30. Άρα έχεις ένα array με 30 επιλογές και εσύ θέλεις από την επιλογή 11 και ύστερα. Άρα μέσω ενός text box γράφεις τον αριθμό 11 και κατεβάζεις τα αρχεία από εκεί και ύστερα. 

if(isset($_POST['apo_edo_kai_istera'])){
  $apedkais = $_POST['apo_edo_kai_istera'];
  $i = int($apedkais) - 1; //επειδή το array ξεκινάει από το 0;

  for($i; $i < count($o_pinakas_me_ta_onomata); $i++){
     //κάπου εδώ θα πρέπει να σκεφτείς τι θα κάνεις με τα ονόματα τον αρχείων που θα έχει 
     //μέσα το κάθε $o_pinakas_me_ta_onomata[$i] γιατί δεν ξέρω καθόλου πως και τι κάνεις με τα αρχεία
  }
}
Δημοσ.

ωραίος είδα έναν παρόμοιο κώδικα με αυτόν αλλά δεν ήξερα τι ακριβώς κάνει! ορίστε ο κώδικας που χρησιμοποιώ για να τα κατεβάζω όλα μαζί

κάπου λογικά θα πρέπει να κολλήσω αυτό που μου έστειλες??

<?
$zip = new ZipArchive;
if ($zip->open('pdf.zip', ZipArchive::OVERWRITE) === TRUE)
{
    if ($handle = opendir('uploads'))
    {
        // Add all files inside the directory
        while (false !== ($entry = readdir($handle)))
        {
            if ($entry != "." && $entry != ".." && !is_dir('./uploads/' . $entry))
            {
                $zip->addFile('./uploads/' . $entry);
            }
        }
        closedir($handle);
    }
 
    $zip->close();
}	
	
	rename('pdf.zip', './admin/download/All_Pdf_From_The_Form.zip');
	
     header('Location: '.'./admin/download/All_Pdf_From_The_Form.zip');

	

?> 
Δημοσ.

Στην Αρχή του form.php βάλε:

<?php

session_start(); /* Starts the session */

if(!$_SESSION['UserData']['Login_check'])
{
  header("location:index.php");
}

?>

Και θα σου δώσει αυτό που θες (εάν ένας χρήστης δεν έχει κάνει login να σε πηγαίνει στην login φόρμα).

 

Παρόλα αυτά όντας και εγώ κάποτε στην θέση σου επέτρεψε μου να σου κάνω ένα code review (κάποια σχόλια στον κώδικά σου). Και αυτό για να σε βοηθήσω να βελτιώθεις εάν θες σαν developer. Εάν δεν σε ενδιαφέρει απλά αγνόησε τα παρακάτω.

 

Πρώτον στον κώδικά σου το password είναι καθαρά plaintext το ξέρω πως μπορεί να είναι demo αλλά σου συνηστώ να κάνεις hashing τα passwords χρησιμοποιόντας μεθόδους που αναγράφει εδώ: https://en.wikipedia.org/wiki/Cryptographic_hash_function

 

Και για να δεις πως θα τo κάνεις σε php ψάξε με τα keywords στην duck duck go (η googleαρε): "password_hash php" (χωρίς " )

Ακόμη για να δεις το πως θα ελέγξεις το password ψάξε ομοίως: "password_verify php"

 

Έτσι θα αλλάξεις ελαφρώς τον κώδικα (στην ορολογία μας λέγετε refactor).

 

 

(Ότι είναι με πλάγια γράμματα είναι keyword που μπορείς να ψάξεις στο google/duckduckgo.)

Ακόμη ας υποθέσουμε ότι δουλεύεις σε μια εταιρεία και το αφεντικό σου είναι ο Κύριος Δενπρογραμματιστίδης, και έχει το συνήθεις να σου λέει συνέχεια αλλαγές που θα κάνουν τον κώδικά σου περίπλοκο. Πως θα διαχωρίσεις την Html από την php?

 

Ακόμη ας υποθέσουμε πως έχεις πολλαλπές μεθόδους αυθεντικοποίησης χρηστών (πχ. με username/password και μέσω google) αλλά η Html σελίδα θες να είναι η ίδια απλά να έχει ένα έξτρα κουμπί. Ακόμα φαντάσου στην εταιρεία πως έχετε και μια όμορφη desighner την Ms Htmlidou (Η εταιρεία έχει εργαζόμενους και απο το εξωτερικό.) που δεν ξέρει php αλλά κάνει eye kandy σελίδες. Πως θα κάνεις την ζωή της ποιο εύκολη στην πανέμορφή Κυρία Htmlidou;

 

Μήπως χρειάζεσαι να ψάξεις κάποιο MVC framework όπως το Codeingiter;

 

Ακόμη έαν πελαγώσε με αυτά ππυο σου είπα απλά πάρε τον χρόνο σου και μάθε σιγά σιγά. Μην βιάζεσαι όλα αυτά είναι συμπηκνωμένες σκέψεις κκαι γνώση και για το μέλλον. Απλά κόψε ένα κομμάτι γνώσης και πρόσθαισε νερό. ;)

 

Ελπίζω να σου άνοιξα την όρεξη.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...