Нужда от помощ с форма и сесии

C++ JAVA
Post Reply
Knoppix_
Турист
Турист
Posts: 322
Joined: Mon Aug 24, 2009 11:55 am

Нужда от помощ с форма и сесии

Post by Knoppix_ » Sun Jan 31, 2016 8:20 am

Здравейте, имам следният код

Code: Select all

<div id="content">
        <?php
        $p = $_GET&#91;'page'&#93;;
		 	
				$page = "inc/pages/".$p.".inc.php";
				 
		if&#40;file_exists&#40;$page&#41;&#41;
			include&#40;$page&#41;;
		elseif&#40;$p==""&#41;
			include&#40;'inc/pages/home.inc.php'&#41;;
			
			else
			
			echo "Заявената от Вас страница не е налична на сървъра!";
			?>
            <br style="clear&#58;both"/>		  
		</div><!--close content_item-->
Това е индекс файла
а това е файла на логин форма

Code: Select all

<?php
session_start&#40;&#41;;
include_once 'inc/dbconnect.inc.php';

if&#40;isset&#40;$_SESSION&#91;'user'&#93;&#41;!=""&#41;
&#123;
	header&#40;"Location&#58; home.php"&#41;;
&#125;

if&#40;isset&#40;$_POST&#91;'btn-login'&#93;&#41;&#41;
&#123;
	$email = mysql_real_escape_string&#40;$_POST&#91;'email'&#93;&#41;;
	$upass = mysql_real_escape_string&#40;$_POST&#91;'pass'&#93;&#41;;
	
	$email = trim&#40;$email&#41;;
	$upass = trim&#40;$upass&#41;;
	
	$res=mysql_query&#40;"SELECT user_id, user_name, user_pass FROM users WHERE user_email='$email'"&#41;;
	$row=mysql_fetch_array&#40;$res&#41;;
	
	$count = mysql_num_rows&#40;$res&#41;; // if uname/pass correct it returns must be 1 row
	
	if&#40;$count == 1 && $row&#91;'user_pass'&#93;==md5&#40;$upass&#41;&#41;
	&#123;
		$_SESSION&#91;'user'&#93; = $row&#91;'user_id'&#93;;
		header&#40;"Location&#58; home.php"&#41;;
	&#125;
	else
	&#123;
		?>
        <script>alert&#40;'Username / Password Seems Wrong !'&#41;;</script>
        <?php
	&#125;
	
&#125;
?>
<div id="login-form">
<form method="post">
<table align="center" width="50%" border="0">
<tr>
<td><input type="text" name="email" placeholder="Your Email" required /></td>
</tr>
<tr>
<td><input type="password" name="pass" placeholder="Your Password" required /></td>
</tr>
<tr>
<td><button type="submit" name="btn-login">Sign In</button></td>
</tr>
<tr>
<td><a href="register.php">Sign Up Here</a></td>
</tr>
</table>
</form>
</div>
Проблема е че при отваряне на файла като страница няма проблем, но като го отворя през менюто ми извежда следното съобщение

Code: Select all

Warning&#58; session_start&#40;&#41;&#58; Cannot send session cache limiter - headers already sent &#40;output started at C&#58;\xampp\htdocs\mot_backUp\index.php&#58;62&#41; in C&#58;\xampp\htdocs\mot_backUp\inc\pages\login.inc.php on line 2


joTunkiq
Потребител
Потребител
Posts: 829
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Sun Jan 31, 2016 10:44 am

Понеже имаш инклудване в инклудване и ти казва, че хедърите вече са пратени. За да го оправиш трбва да отвориш НАЙ-ГЛАВНИЯ файл, в който се инклудва всичко и НАЙ НАЙ НАЙ-отгоре да отвориш php и да стартираш сесиите и вече ВСИЧКИ файлове, който инклудваш в тоя ще имат досстъп до сесията ;)

Пример:
главния индекс:
[php]<?php
session_start();

// .. require neshto ..
?>

<html>
.
.
.
<?php
// koda za izkarwane na stranici
.
.
[/php] :idea: :?: :?:

Още един пример, това е видео урок, който работи по същия начин с инклудване: Гледай внимателно :?:

Knoppix_
Турист
Турист
Posts: 322
Joined: Mon Aug 24, 2009 11:55 am

Post by Knoppix_ » Sun Jan 31, 2016 10:55 am

Добре това го няма този warnnig но вече формата спира да работи т.е при натискане на субмит препраща в индекс файла а не в посочената за редирект страница

ето го кода

Code: Select all


[/co<?php 
	require_once("inc/functions.inc.php");
	require_once("inc/dbconnect.inc.php");
	if (logged_in() == true) {
		redirect_to("?page=profile");
	}
?>
<div style="border: 1px solid #fff; border-radius: 5px; float: left; margin: 20px 10px 5px 150px; padding: 10px; width: 320px;">
		<form action="<?=$_SERVER['PHP_SELF']?>" method="post" id="user_information">
		<input type="text" id="name" class="txtinput" autocomplete="off" tabindex="1" name="username" 
        style="width:240px;" placeholder="Username:" /><br />
		<input type="password" id="password" class="txtinput" autocomplete="off" tabindex="1" name="password" 
        style="width:240px;" placeholder="Password:" /><br />
		<div><strong style="color:#FFF;"> Remember me: </strong><input type="checkbox" name="remember" style="margin-lef:25px;" /></div>
        <a style="float:left;" href="?page=forgot">Forgot Password?</a><br/>
        <strong style="color:#FFF;">You don't have account.</strong><a href="?page=register">Register here</a>
        <br/><br/>
        <input type="submit" style="margin-left:115px;" name="submit" value="Login" />
        <br/><br/>
        <div style="float:left;">
		
		
        </div>
</form>
</div>
<?php
if (isset($_POST['submit'])) {
	$username = $_POST['username'];
	$password = $_POST['password'];
	
	// processing remember me option and setting cookie with long expiry date
	if (isset($_POST['remember'])) {	
		session_set_cookie_params('604800'); //one week (value in seconds)
		session_regenerate_id(true);
	} 

	$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
	# check connection
	if ($mysqli->connect_errno) {
		echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
		exit();
	}
	
	$sql = "SELECT * from users WHERE username LIKE '{$username}' AND password LIKE '{$password}' LIMIT 1";
	$result = $mysqli->query($sql);
	
	if ($result->num_rows != 1) {
		echo "<p><b>Error:</b> Invalid username/password combination</p>";
	} else {
		// Authenticated, set session variables
		$user = $result->fetch_array();
		$_SESSION['user_id'] = $user['id'];
		$_SESSION['username'] = $user['username'];
		
		// update status to online
		$timestamp = time();
		$sql = "UPDATE users SET status={$timestamp} WHERE id={$_SESSION['user_id']}";
		$result = $mysqli->query($sql);
		
		redirect_to("profile.php?id={$_SESSION['user_id']}");
		// do stuffs
	}
}

if(isset($_GET['msg'])) {
	echo "<p style='color:red;'>".$_GET['msg']."</p>";
}
?>de]

joTunkiq
Потребител
Потребител
Posts: 829
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Sun Jan 31, 2016 11:42 am

Махаш екшъна от формите и си прехващаш натискането на бутона :?:

Post Reply