Archief - PHP: probleem met php in html met inlogsysteem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cedric

Legacy Member
ik heb een soort van login gemaakt met php en mysql maar als ik het tussen de foutmelding tussen de opmaak wil zetten krijg ik een error als ik wil inloggen krijg ik een foutmelding namenlijk deze

Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\vanbeverenc\Bureaublad\mijn docs\PHP\mijn oefeningen\project\index1.php:10) in C:\Documents and Settings\vanbeverenc\Bureaublad\mijn docs\PHP\mijn oefeningen\project\index1.php on line 29


dit is de code

index.php
PHP:
<?php
	//check indien je het form al doorlopen hebt
	if(isset($_POST['submit'])){
		if($_POST['submit']==true){

		//geef de post methods simpele variabelen
			$login=$_POST['login'];
			$paswoord=$_POST['paswoord'];


		//controle op juiste gegevens
			if($_POST['login'] && $_POST['paswoord'])
			{
		        $connect = mysql_connect("localhost","root","test") or die ($error);
				mysql_select_db("project",$connect) or die($error);
				$QryLogin = mysql_query("SELECT login, paswoord FROM TblLogin WHERE login='$login' AND paswoord='$paswoord'");
				$login_check = mysql_num_rows($QryLogin);

				if($login_check > 0)
				{
					//session variabelen registreren
		  			while($Rij1 = mysql_fetch_array($QryLogin))
			  		{
						session_start();
						session_register('login');
						$_SESSION['login']=$Rij1['login'];
		            	header("Location: examens.php");
			 	 	}

				}else{
					//geeft een fout weer bij het verkeerd inloggen
					echo("Fout bij het inloggen, probeer opnieuw");
				}

			 }else{
				//geef fout weer bij het niet invoeren van alle gegevens
			 	echo("voer alle gegevens in aub...");
			 }
		}
	}
?>
<html>
<head>
<link href="opmaak.css" rel="stylesheet" type"text/css">
<title> Welkom op het online examen. </title>
</head>
<body>
<p class="TopBalk">
<p class="venster">

<form method="POST" action="index.php">
<table>
	<tr>
		<td>login: </td>
		<td><input type="text" name="login"></td>
	</tr>
	<tr>
		<td>paswoord:</td>
		<td><input type="password" name="paswoord"></td>
	</tr>
	<tr>
	    <input type = "hidden" name = "submit" value = "true">
	    <input type="submit" value="verzenden">
	    <input type="reset" value="wissen" name="reset">
	</tr>

</table>
</form>
</p></p>
</body>
</html>


connect.php
PHP:
<?php
	$connect = mysql_connect("localhost","root","test") or die ($error);
	mysql_select_db("project",$connect) or die($error);
	$QryLogin = mysql_query("SELECT login, paswoord FROM TblLogin WHERE login='$login' AND paswoord='$paswoord'");
	$login_check = mysql_num_rows($QryLogin);
?>



opmaak.css
PHP:
body{background-color:purple}
.TopBalk{
	background-color:red;
	margin:2px;
	position:absolute;
	width:60%;
	height:7%;
	background-position:center center;
	left:20%;
	top:18%;
	border-top-width:thin;
	border-top-color:red;
	border-top-style:solid;
	border-bottom-width:thin;
	border-bottom-style:solid;
	border-top-color:black;
	border-bottom-color:red;
	border-right-width:thin;
	border-right-style:solid;
	border-right-color:black;
	border-left-width:thin;
	border-left-style:solid;

}
.venster{
	background-color:white;
	margin:2px;
	position:absolute;
	width:60%;
	height:50%;
	background-position:center center;
	left:20%;
	top:25%;
	border-right-width:thin;
	border-right-style:solid;
	border-bottom-width:thin;
	border-bottom-style:solid;
	border-right-color:#000000;
	border-bottom-color:black;
	border-left-width:thin;
	border-left-style:solid;

	
}

Pietje Prik

Legacy Member
't is een veel voorkomende error.

zet eerst eens achter deze code
PHP:
header("Location: examens.php");
een exit:
PHP:
header("Location: examens.php");
exit;


Moest dit niet werken, verander dan:

PHP:
header("Location: examens.php");

in

PHP:
echo '
<script type="text/javascript">
window.location = "examens.php"
</script>
';

Cedric

Legacy Member
maar vreemd genoeg werkt het zonder extra code als ik de php tags niet in mijn layout zet, maar vanaf ik ze tssn <p class="venster"> </p> zet werkt het niet meer :p

Lashknife

Legacy Member
p!mp zei:
maar vreemd genoeg werkt het zonder extra code als ik de php tags niet in mijn layout zet, maar vanaf ik ze tssn <p class="venster"> </p> zet werkt het niet meer :p
dat is niet vreemd maar juist de point van de error.

header information mag niet gestuurd worden als er reeds output naar de htmlbuffer is gestuurd (een echo, of je hebt reeds htmlcode voor je php-header instructie geschreven)

ob_start(); helemaal in het begin van je page (zelfs geen space voor je <?php tag zetten!) en ob_end_flush(); helemaal aan het einde.

output buffer, dan wordt eerst alle php geparsed en dan pas vanuit de tijdelijke buffer de html doorgestuurd naar de browser.

verdeye

Legacy Member
moet ge u session_start(); ni gewoon boven alle code uitvoeren ? (n00b)

DarkBone

Legacy Member
verdeye zei:
moet ge u session_start(); ni gewoon boven alle code uitvoeren ? (n00b)

Neen, alhoewel dat common practice is, je hoeft het enkel aan te roepen wanneer je ook daadwerkelijk de sessie informatie wil gebruiken op die pagina.

*edit*
En zoals dJeez komt te zeggen inderdaad voor om het even welk output. Maar dat geldt voor iedere functie die extra headers gaat toevoegen aan de pagina.

dJeez

Legacy Member
verdeye zei:
moet ge u session_start(); ni gewoon boven alle code uitvoeren ? (n00b)
Neen, dat hoeft niet helemaal in 't begin te staan, maar moet wel uitgevoerd worden voor je output naar de browser stuurt. Staat trouwens klaar en duidelijk vermeld in de (online) php reference manual.

Fr3aK

Legacy Member
Dit was eigenlijk het enige probleem waar ik mij aan stoorde in PHP.
Dat je header informatie bovenaan je document moet zetten maar dat is in vele gevallen niet mogelijk.
Daarom kunt ge best met ob_start(); en ob_end_flush(); werken om het probleem te passeren via een omweg.
Let wel: deze methode lost het probleem niet op maar gebruikt gewoon een omweg!

dJeez

Legacy Member
Fr3aK zei:
Dit was eigenlijk het enige probleem waar ik mij aan stoorde in PHP.
Dat je header informatie bovenaan je document moet zetten maar dat is in vele gevallen niet mogelijk.
Dat heeft an sich totaal niets te maken met PHP, maar wel met de HTML RFC. Dit is nu eenmaal hoe HTML werkt. Voorzover ik mij kan herinneren is dit trouwens in elke webscripting taal het geval, tenzij er output buffering achter de schermen gebeurt (wat dan trouwens identiek is als bij PHP de ob_XXX functies te gebruiken).

Cedric

Legacy Member
bedankt voor jullie reacties maar die ob_start en ob_end_flush(); mocht ik niet gebruiken aangezien we dit nog niet gezien hebben in de les. Ik heb het opgelost door variabelen te vergelijken en dan tussen de p tags met een if gewerkt

bedankt
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan