Hallo,

In mijn script, om bepaalde user wijzigen te kunnen doorvoeren gebruik ik vaak de header(); functie.

Nu loop ik bijna aan het einde van het script tegen het volgende aan:

Warning: Cannot modify header information - headers already sent by (output started at /path/user_view.php:316) in /path/user_view.php on line 345

De code die hierbij hoort is:


				echo '<div id="other">';
				
				if(isset($_POST['other']))
				{										
					$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" -a "'.$_POST['type'].'" -n "'.$_POST['status'].'"');
					
					header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
				}			
				
				echo '<form method="post">';
				echo '<table id="edit" class="user">';
				echo '<tr>';
				echo '<td>Type</td> <td><select name="type">'.(isset($_POST['type']) ? ($_POST['type'] == '0' ? '<option value="0" selected="selected">Gebruiker</option><option value="1">Administrator</option>' : '') : '<option value="0" '.(getUserDetails('Administrator') == 'no' ? 'selected="selected"' : '').'>Gebruiker</option>').(isset($_POST['type']) ? ($_POST['type'] == '1' ? '<option value="0">Gebruiker</option><option value="1" selected="selected">Administrator</option>' : '') : '<option value="1" '.(getUserDetails('Administrator') == 'yes' ? 'selected="selected"' : '').'>Administrator</option>').'</select></td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Status</td> <td><select name="status">'.(isset($_POST['status']) ? ($_POST['status'] == '0' ? '<option value="0" selected="selected">Actief</option><option value="1">Niet actief</option>' : '') : '<option value="0" '.(getUserDetails('Active') == 'yes' ? 'selected="selected"' : '').'>Actief</option>').(isset($_POST['status']) ? ($_POST['status'] == '1' ? '<option value="0">Actief</option><option value="1" selected="selected">Niet actief</option>' : '') : '<option value="1" '.(getUserDetails('Active') == 'no' ? 'selected="selected"' : '').'>Niet actief</option>').'</select></td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td></td> <td><input type="submit" name="other" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
				echo '</div>';
				
				echo '<div id="groups">';
				echo '</div>';
				
				echo '<div id="sendas">';
				
				if(isset($_POST['sendas']))
				{			
					foreach($_POST as $key => $value)
					{
						if(strpos($key, 'user-') === 0)
						{
							$getValue = explode ('-', $value);
						
							if($getValue[0] == 1)
							{
								$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --add-sendas "'.$getValue[1].'"');
								
								header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
							}
							
							if($getValue[0] == 0)
							{
								$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --del-sendas "'.$getValue[1].'"');
								
								header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
							}
						}
					}
				}
								
				echo '<form method="post">';			
				echo '<table>';
				echo '<tr>';
				echo '<th></th>';
				echo '<th>Ja</th>';
				echo '<th>Nee</th>';
				echo '</tr>';
				
				$getUsername = getUsers('0x6701001E');
				$getType = getUsers('0x67B10003');
				$getSendAsUsers = getSendAsUsers();

				$i = 0;
				
				foreach($getUsername as $key => $value)
				{
					$i++;
				
					echo '<tr>';
					
					if($getUsername[$key] != getUserDetails('Username'))
					{
						if($getType[$key] < 2)
						{
							echo '<td>'.$getUsername[$key].'</td>';
							echo '<td><input type="radio" name="user-'.$i.'" value="1-'.$getUsername[$key].'" '.(in_array($getUsername[$key], $getSendAsUsers) ? 'checked' : '').' /></td>';
							echo '<td><input type="radio" name="user-'.$i.'" value="0-'.$getUsername[$key].'" '.(!in_array($getUsername[$key], $getSendAsUsers) ? 'checked' : '').' /></td>';	
						}
					}
					
					echo '</tr>';
				}

				echo '<tr>';
				echo '<td><input type="submit" name="sendas" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
				echo '</div>';


Waarbij de dik gedrukte regel 13 regel 316 is in het script.

Eerder is het script heb ik ook al 4/5 stukken met de header functie en dat gaat gewoon goed, en heb daar niks geen errors.

Ook heb ik helemaal boven en onderaan de pagina's het volgende al, zonder enig resultaat:

ob_start();
ob_end_flush();

Wat doe ik fout?
Oké, even weggeweest maar hier ben ik weer. Hoe ga ik onderstaande code dan goed krijgen zonder dat de HTML al wordt ge-echo'ed voor de PHP?


				echo '<div id="quota">';
				
				if(isset($_POST['quota']))
				{
					$error = false;
					$errorMessage = array();
				
					if(!is_numeric($_POST['warninglevel']))
					{
						$error = true;
						$errorMessage[] = 'Warning level is ongeldig';			
					}
					elseif($_POST['warninglevel'] > $_POST['softlevel'])
					{
						$error = true;
						$errorMessage[] = 'Warning level mag niet hoger zijn als het soft level';			
					}
					elseif($_POST['warninglevel'] > $_POST['hardlevel'])
					{
						$error = true;
						$errorMessage[] = 'Warning level mag niet hoger zijn als het hard level';
					}
					
					if(!is_numeric($_POST['softlevel']))
					{
						$error = true;
						$errorMessage[] = 'Soft level is ongeldig';			
					}
					elseif($_POST['softlevel'] > $_POST['hardlevel'])
					{
						$error = true;
						$errorMessage[] = 'Soft level mag niet hoger zijn als het hard level';	
					}
					elseif($_POST['softlevel'] < $_POST['warninglevel'])
					{
						$error = true;
						$errorMessage[] = 'Soft level mag niet lager zijn als het warning level';	
					}
					
					if(!is_numeric($_POST['hardlevel']))
					{
						$error = true;
						$errorMessage[] = 'Hard level is ongeldig';			
					}
					elseif($_POST['hardlevel'] < $_POST['softlevel'])
					{
						$error = true;
						$errorMessage[] = 'Hard level mag niet lager zijn als het soft level';	
					}
					elseif($_POST['hardlevel'] < $_POST['warninglevel'])
					{
						$error = true;
						$errorMessage[] = 'Hard level mag niet lager zijn als het warning level';	
					}
					
					if($error)
					{
						echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';
						
						foreach($errorMessage as $message)
						{
							echo '- '.$message.'<br />';
						}
						
						echo '</p>';
					}
					else
					{						
						$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --qo "'.$_POST['quotasetting'].'" --qw "'.$_POST['warninglevel'].'" --qs "'.$_POST['softlevel'].'" --qh "'.$_POST['hardlevel'].'"');
						
						header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
					}
				}			
				
				echo '<form method="post">';
				echo '<table id="edit" class="user">';	
				echo '<tr>';
				echo '<td>Eigen quota</td> <td><select name="quotasetting">'.(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '1' ? '<option value="1" selected="selected">Ja</option><option value="0">Nee</option>' : '') : '<option value="1" '.(getUserDetails('Quota overrides') == 'yes' ? 'selected="selected"' : '').'>Ja</option>').(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '0' ? '<option value="1">Ja</option><option value="0" selected="selected">Nee</option>' : '') : '<option value="0" '.(getUserDetails('Quota overrides') == 'no' ? 'selected="selected"' : '').'>Nee</option>').'</select></td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Warning level</td> <td><input type="text" name="warninglevel" value="'.(isset($_POST['warninglevel']) ? formValue('warninglevel') : (getUserDetails('Warning level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Warning level'), -2) == 'KB' ? ''.round(getUserDetails('Warning level') / 1024, 0).'' : '').(substr(getUserDetails('Warning level'), -2) == 'MB' ? ''.round(getUserDetails('Warning level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Soft level</td> <td><input type="text" name="softlevel" value="'.(isset($_POST['softlevel']) ? formValue('softlevel') : (getUserDetails('Soft level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Soft level'), -2) == 'KB' ? ''.round(getUserDetails('Soft level') / 1024, 0).'' : '').(substr(getUserDetails('Soft level'), -2) == 'MB' ? ''.round(getUserDetails('Soft level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Hard level</td> <td><input type="text" name="hardlevel" value="'.(isset($_POST['hardlevel']) ? formValue('hardlevel') : (getUserDetails('Hard level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Hard level'), -2) == 'KB' ? ''.round(getUserDetails('Hard level') / 1024, 0).'' : '').(substr(getUserDetails('Hard level'), -2) == 'MB' ? ''.round(getUserDetails('Hard level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td></td> <td><input type="submit" name="quota" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
				echo '</div>';
Gerben Kwakkel op 17/01/2014 09:10:21

Oké, even weggeweest maar hier ben ik weer. Hoe ga ik onderstaande code dan goed krijgen zonder dat de HTML al wordt ge-echo'ed voor de PHP?


...



if en else omdraaien, ipv else nog een if, div naar beneden


 <?php                
                if(isset($_POST['quota']))
                {
                    $error = false;
                    $errorMessage = array();
                
                    if(!is_numeric($_POST['warninglevel']))
                    {
                        $error = true;
                        $errorMessage[] = 'Warning level is ongeldig';            
                    }
                    elseif($_POST['warninglevel'] > $_POST['softlevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Warning level mag niet hoger zijn als het soft level';            
                    }
                    elseif($_POST['warninglevel'] > $_POST['hardlevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Warning level mag niet hoger zijn als het hard level';
                    }
                    
                    if(!is_numeric($_POST['softlevel']))
                    {
                        $error = true;
                        $errorMessage[] = 'Soft level is ongeldig';            
                    }
                    elseif($_POST['softlevel'] > $_POST['hardlevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Soft level mag niet hoger zijn als het hard level';    
                    }
                    elseif($_POST['softlevel'] < $_POST['warninglevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Soft level mag niet lager zijn als het warning level';    
                    }
                    
                    if(!is_numeric($_POST['hardlevel']))
                    {
                        $error = true;
                        $errorMessage[] = 'Hard level is ongeldig';            
                    }
                    elseif($_POST['hardlevel'] < $_POST['softlevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Hard level mag niet lager zijn als het soft level';    
                    }
                    elseif($_POST['hardlevel'] < $_POST['warninglevel'])
                    {
                        $error = true;
                        $errorMessage[] = 'Hard level mag niet lager zijn als het warning level';    
                    }
					
					if($error == false){
                        $ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --qo "'.$_POST['quotasetting'].'" --qw "'.$_POST['warninglevel'].'" --qs "'.$_POST['softlevel'].'" --qh "'.$_POST['hardlevel'].'"');
                        
                        header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
                    }
					
					echo '<div id="quota">';
					
					if($error == true){
					
                        echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';
                        
                        foreach($errorMessage as $message)
                        {
                            echo '- '.$message.'<br />';
                        }
                        
                        echo '</p>';
                    }
                }
                
                echo '<form method="post">';
                echo '<table id="edit" class="user">';    
                echo '<tr>';
                echo '<td>Eigen quota</td> <td><select name="quotasetting">'.(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '1' ? '<option value="1" selected="selected">Ja</option><option value="0">Nee</option>' : '') : '<option value="1" '.(getUserDetails('Quota overrides') == 'yes' ? 'selected="selected"' : '').'>Ja</option>').(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '0' ? '<option value="1">Ja</option><option value="0" selected="selected">Nee</option>' : '') : '<option value="0" '.(getUserDetails('Quota overrides') == 'no' ? 'selected="selected"' : '').'>Nee</option>').'</select></td>';
                echo '</tr>';    
                echo '<tr>';
                echo '<td>Warning level</td> <td><input type="text" name="warninglevel" value="'.(isset($_POST['warninglevel']) ? formValue('warninglevel') : (getUserDetails('Warning level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Warning level'), -2) == 'KB' ? ''.round(getUserDetails('Warning level') / 1024, 0).'' : '').(substr(getUserDetails('Warning level'), -2) == 'MB' ? ''.round(getUserDetails('Warning level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
                echo '</tr>';    
                echo '<tr>';
                echo '<td>Soft level</td> <td><input type="text" name="softlevel" value="'.(isset($_POST['softlevel']) ? formValue('softlevel') : (getUserDetails('Soft level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Soft level'), -2) == 'KB' ? ''.round(getUserDetails('Soft level') / 1024, 0).'' : '').(substr(getUserDetails('Soft level'), -2) == 'MB' ? ''.round(getUserDetails('Soft level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
                echo '</tr>';    
                echo '<tr>';
                echo '<td>Hard level</td> <td><input type="text" name="hardlevel" value="'.(isset($_POST['hardlevel']) ? formValue('hardlevel') : (getUserDetails('Hard level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Hard level'), -2) == 'KB' ? ''.round(getUserDetails('Hard level') / 1024, 0).'' : '').(substr(getUserDetails('Hard level'), -2) == 'MB' ? ''.round(getUserDetails('Hard level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
                echo '</tr>';
                echo '<tr>';
                echo '<td></td> <td><input type="submit" name="quota" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
                echo '</tr>';
                echo '</table>';
                echo '</form>';
                echo '</div>';
?>


op regel 58 kun je die .'' aan het einde weg laten.
Je kunt ipv $error true,false ook evengoed controleren op $errorMessage.
Je controleert of een formulier gepost is met if($_SERVER['REQUEST_METHOD'] == 'POST')
Ja alleen daaronder komt weer een blok met andere gegevens die gewijzigd moeten worden, dus daar na die </div> ga ik weer verder met een script. Kijk hier even het volledige script:


<?php
				echo '<div id="general">';
				
				list($getFirstname, $getLastname) = explode(' ', getUserDetails('Fullname'), 2);
				
				if(isset($_POST['general']))
				{				
					$error = false;
					$errorMessage = array();

					if(empty($_POST['firstname']) || !preg_match("/^[a-zA-Z -]+$/", $_POST['firstname']))
					{
						$error = true;
						$errorMessage[] = 'Voornaam is ongeldig';
					}			
					
					if(empty($_POST['lastname']) || !preg_match("/^[a-zA-Z -]+$/", $_POST['lastname']))
					{
						$error = true;
						$errorMessage[] = 'Achternaam is ongeldig';
					}
					
					if(empty($_POST['emailaddress']) || !filter_var($_POST['emailaddress'], FILTER_VALIDATE_EMAIL))
					{
						$error = true;
						$errorMessage[] = 'E-mailadres is ongeldig';
					}
					
					if($error)
					{
						echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';
						
						foreach($errorMessage as $message)
						{
							echo '- '.$message.'<br />';
						}
						
						echo '</p>';
					}
					else
					{
						if(empty($_POST['password']) && (empty($_POST['confirm_password'])))
						{							
							$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" -f "'.$_POST['firstname'].' '.$_POST['lastname'].'" -e "'.$_POST['emailaddress'].'" && lat-pseudonyms -d -f -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($getFirstname)).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($getLastname)).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($getFirstname)).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($getLastname)).'" && lat-users -a -c "'.getUserDetails('Username').' | '.$_POST['firstname'].' | '.$_POST['lastname'].'" && lat-pseudonyms -a -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['firstname'])).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['lastname'])).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['firstname'])).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['lastname'])).'"');
							
							header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
						}

						if(!empty($_POST['password']))
						{
							$error = false;
							$errorMessage = array();
						
							if($_POST['password'] != $_POST['confirm_password'] || !preg_match('~^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=[A-Za-z0-9]*[^A-Za-z0-9])\S{7,}$~', $_POST['password']))
							{
								$error = true;
								$errorMessage[] = 'Wachtwoorden is ongeldig';
							}
							
							if($error)
							{
								echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';
								
								foreach($errorMessage as $message)
								{
									echo '- '.$message.'<br />';
								}
								
								echo '</p>';
							}
							else
							{
								$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" -f "'.$_POST['firstname'].' '.$_POST['lastname'].'" -e "'.$_POST['emailaddress'].'" -p "'.$_POST['password'].'" && lat-pseudonyms -d -f -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($getFirstname)).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($getLastname)).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($getFirstname)).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($getLastname)).'" && lat-users -a -c "'.getUserDetails('Username').' | '.$_POST['firstname'].' | '.$_POST['lastname'].' | '.$_POST['password'].'" && lat-pseudonyms -a -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['firstname'])).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['lastname'])).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['firstname'])).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['lastname'])).'"');
								
								header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
							}
						}
					}
				}
					
				echo '<form method="post">';
				echo '<table id="edit" class="user">';
				echo '<tr>';
				echo '<td>Voornaam</td> <td><input type="text" name="firstname" value="'.(isset($_POST['firstname']) ? formValue('firstname') : $getFirstname).'" size="25" autocomplete="off" /></td>';
				echo '</tr>';		
				echo '<tr>';
				echo '<td>Achternaam</td> <td><input type="text" name="lastname" value="'.(isset($_POST['lastname']) ? formValue('lastname') : $getLastname).'" size="25" autocomplete="off" /></td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td>E-mailadres</td> <td><input type="text" name="emailaddress" value="'.(isset($_POST['emailaddress']) ? formValue('emailaddress') : getUserDetails('Emailaddress')).'" size="25" autocomplete="off" /></td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td>Wachtwoord</td> <td><input type="password" name="password" value="" size="25" autocomplete="off" /></td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Bevestig wachtwoord</td> <td><input type="password" name="confirm_password" value="" size="25" autocomplete="off" /></td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td></td> <td><input type="submit" name="general" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
				echo '</div>';

				echo '<div id="quota">';
				
				if(isset($_POST['quota']))
				{
					$error = false;
					$errorMessage = array();
				
					if(!is_numeric($_POST['warninglevel']))
					{
						$error = true;
						$errorMessage[] = 'Warning level is ongeldig';			
					}
					elseif($_POST['warninglevel'] > $_POST['softlevel'])
					{
						$error = true;
						$errorMessage[] = 'Warning level mag niet hoger zijn als het soft level';			
					}
					elseif($_POST['warninglevel'] > $_POST['hardlevel'])
					{
						$error = true;
						$errorMessage[] = 'Warning level mag niet hoger zijn als het hard level';
					}
					
					if(!is_numeric($_POST['softlevel']))
					{
						$error = true;
						$errorMessage[] = 'Soft level is ongeldig';			
					}
					elseif($_POST['softlevel'] > $_POST['hardlevel'])
					{
						$error = true;
						$errorMessage[] = 'Soft level mag niet hoger zijn als het hard level';	
					}
					elseif($_POST['softlevel'] < $_POST['warninglevel'])
					{
						$error = true;
						$errorMessage[] = 'Soft level mag niet lager zijn als het warning level';	
					}
					
					if(!is_numeric($_POST['hardlevel']))
					{
						$error = true;
						$errorMessage[] = 'Hard level is ongeldig';			
					}
					elseif($_POST['hardlevel'] < $_POST['softlevel'])
					{
						$error = true;
						$errorMessage[] = 'Hard level mag niet lager zijn als het soft level';	
					}
					elseif($_POST['hardlevel'] < $_POST['warninglevel'])
					{
						$error = true;
						$errorMessage[] = 'Hard level mag niet lager zijn als het warning level';	
					}
					
					if($error)
					{
						echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';
						
						foreach($errorMessage as $message)
						{
							echo '- '.$message.'<br />';
						}
						
						echo '</p>';
					}
					else
					{						
						$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --qo "'.$_POST['quotasetting'].'" --qw "'.$_POST['warninglevel'].'" --qs "'.$_POST['softlevel'].'" --qh "'.$_POST['hardlevel'].'"');
						
						header('Location: index.php?page=user_view&user='.getUserDetails('Username').'');
					}
				}			
				
				echo '<form method="post">';
				echo '<table id="edit" class="user">';	
				echo '<tr>';
				echo '<td>Eigen quota</td> <td><select name="quotasetting">'.(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '1' ? '<option value="1" selected="selected">Ja</option><option value="0">Nee</option>' : '') : '<option value="1" '.(getUserDetails('Quota overrides') == 'yes' ? 'selected="selected"' : '').'>Ja</option>').(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '0' ? '<option value="1">Ja</option><option value="0" selected="selected">Nee</option>' : '') : '<option value="0" '.(getUserDetails('Quota overrides') == 'no' ? 'selected="selected"' : '').'>Nee</option>').'</select></td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Warning level</td> <td><input type="text" name="warninglevel" value="'.(isset($_POST['warninglevel']) ? formValue('warninglevel') : (getUserDetails('Warning level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Warning level'), -2) == 'KB' ? ''.round(getUserDetails('Warning level') / 1024, 0).'' : '').(substr(getUserDetails('Warning level'), -2) == 'MB' ? ''.round(getUserDetails('Warning level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Soft level</td> <td><input type="text" name="softlevel" value="'.(isset($_POST['softlevel']) ? formValue('softlevel') : (getUserDetails('Soft level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Soft level'), -2) == 'KB' ? ''.round(getUserDetails('Soft level') / 1024, 0).'' : '').(substr(getUserDetails('Soft level'), -2) == 'MB' ? ''.round(getUserDetails('Soft level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';	
				echo '<tr>';
				echo '<td>Hard level</td> <td><input type="text" name="hardlevel" value="'.(isset($_POST['hardlevel']) ? formValue('hardlevel') : (getUserDetails('Hard level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Hard level'), -2) == 'KB' ? ''.round(getUserDetails('Hard level') / 1024, 0).'' : '').(substr(getUserDetails('Hard level'), -2) == 'MB' ? ''.round(getUserDetails('Hard level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td></td> <td><input type="submit" name="quota" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
				echo '</div>';
?>
Je moet de volgorde van het programmeren aanpassen. Gestructureerd ipv alles door elkaar.

Helemaal boven aan begin je met if($_SERVER['REQUEST_METHOD'] == 'POST')
Daarna kijk je welk formulier is gepost, quota of general.
Op basis van welk formulier doe je de controles voor de velden, sla je errors op in variabelen en bij OK stuur je header.

Daarna komt je html gedeelte <html>... <div>

Vervolgens ga je controleren of er errors zijn en zo ja deze weergeven.

Daarna de formulieren etc.

[size=xsmall]Toevoeging op 17/01/2014 11:20:28:[/size]

Hopelijk helpt dit je verder op weg. Ik heb het error gedeelte eruit gehaald, ik controleer in plaats daarvan op errorMessage.
Je wachtwoord controle is een beetje vreemd en je inputs blijven niet onthouden naar de post, maar dat zijn dan nog dingen die je zelf kunt verbeteren.

<?php
list($getFirstname, $getLastname) = explode(' ', getUserDetails('Fullname'), 2);

if($_SERVER['REQUEST_METHOD'] == 'POST'){

$errorMessage = array();

if(isset($_POST['general']))
{
if(empty($_POST['firstname']) || !preg_match("/^[a-zA-Z -]+$/", $_POST['firstname']))
{
$errorMessage['general'][] = 'Voornaam is ongeldig';
}

if(empty($_POST['lastname']) || !preg_match("/^[a-zA-Z -]+$/", $_POST['lastname']))
{
$errorMessage['general'][] = 'Achternaam is ongeldig';
}

if(empty($_POST['emailaddress']) || !filter_var($_POST['emailaddress'], FILTER_VALIDATE_EMAIL))
{
$errorMessage['general'][] = 'E-mailadres is ongeldig';
}

if(!isset($errorMessage['general']) || count($errorMessage['general']) == 0)
{
if(empty($_POST['password']) && (empty($_POST['confirm_password'])))
{
$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" -f "'.$_POST['firstname'].' '.$_POST['lastname'].'" -e "'.$_POST['emailaddress'].'" && lat-pseudonyms -d -f -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($getFirstname)).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($getLastname)).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($getFirstname)).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($getLastname)).'" && lat-users -a -c "'.getUserDetails('Username').' | '.$_POST['firstname'].' | '.$_POST['lastname'].'" && lat-pseudonyms -a -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['firstname'])).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['lastname'])).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['firstname'])).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['lastname'])).'"');

header('Location: index.php?page=user_view&user='.getUserDetails('Username'));
}

if(!empty($_POST['password']))
{
if($_POST['password'] != $_POST['confirm_password'] || !preg_match('~^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=[A-Za-z0-9]*[^A-Za-z0-9])\S{7,}$~', $_POST['password']))
{
$errorMessage['general'][] = 'Wachtwoorden is ongeldig';
}

if(!isset($errorMessage['general']) || count($errorMessage['general']) == 0)
{
$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" -f "'.$_POST['firstname'].' '.$_POST['lastname'].'" -e "'.$_POST['emailaddress'].'" -p "'.$_POST['password'].'" && lat-pseudonyms -d -f -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($getFirstname)).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($getLastname)).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($getFirstname)).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($getLastname)).'" && lat-users -a -c "'.getUserDetails('Username').' | '.$_POST['firstname'].' | '.$_POST['lastname'].' | '.$_POST['password'].'" && lat-pseudonyms -a -c "'.getUserDetails('Username').' | '.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['firstname'])).'.'.str_replace(array(' ', '-'), array('.', '.'), strtolower($_POST['lastname'])).' | '.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['firstname'])).'_'.str_replace(array(' ', '-'), array('_', '_'), strtolower($_POST['lastname'])).'"');

header('Location: index.php?page=user_view&user='.getUserDetails('Username'));
}
}
}
}
else if(isset($_POST['quota']))
{
if(!is_numeric($_POST['warninglevel']))
{
$errorMessage['quota'][] = 'Warning level is ongeldig';
}
elseif($_POST['warninglevel'] > $_POST['softlevel'])
{
$errorMessage['quota'][] = 'Warning level mag niet hoger zijn als het soft level';
}
elseif($_POST['warninglevel'] > $_POST['hardlevel'])
{
$errorMessage['quota'][] = 'Warning level mag niet hoger zijn als het hard level';
}

if(!is_numeric($_POST['softlevel']))
{
$errorMessage['quota'][] = 'Soft level is ongeldig';
}
elseif($_POST['softlevel'] > $_POST['hardlevel'])
{
$errorMessage['quota'][] = 'Soft level mag niet hoger zijn als het hard level';
}
elseif($_POST['softlevel'] < $_POST['warninglevel'])
{
$errorMessage['quota'][] = 'Soft level mag niet lager zijn als het warning level';
}

if(!is_numeric($_POST['hardlevel']))
{
$errorMessage['quota'][] = 'Hard level is ongeldig';
}
elseif($_POST['hardlevel'] < $_POST['softlevel'])
{
$errorMessage['quota'][] = 'Hard level mag niet lager zijn als het soft level';
}
elseif($_POST['hardlevel'] < $_POST['warninglevel'])
{
$errorMessage['quota'][] = 'Hard level mag niet lager zijn als het warning level';
}

if(!isset($errorMessage['quota']) || count($errorMessage['quota']) == 0)
{
$ssh->exec('zarafa-admin -u "'.getUserDetails('Username').'" --qo "'.$_POST['quotasetting'].'" --qw "'.$_POST['warninglevel'].'" --qs "'.$_POST['softlevel'].'" --qh "'.$_POST['hardlevel'].'"');

header('Location: index.php?page=user_view&user='.getUserDetails('Username'));
}
}
}

echo '<div id="general">';

if(isset($errorMessage['general']) && count($errorMessage['general'] > 0))
{
echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';

foreach($errorMessage['general'] as $message)
{
echo '- '.$message.'<br />';
}

echo '</p>';
}

echo '<form method="post">';
echo '<table id="edit" class="user">';
echo '<tr>';
echo '<td>Voornaam</td> <td><input type="text" name="firstname" value="'.(isset($_POST['firstname']) ? formValue('firstname') : $getFirstname).'" size="25" autocomplete="off" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Achternaam</td> <td><input type="text" name="lastname" value="'.(isset($_POST['lastname']) ? formValue('lastname') : $getLastname).'" size="25" autocomplete="off" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>E-mailadres</td> <td><input type="text" name="emailaddress" value="'.(isset($_POST['emailaddress']) ? formValue('emailaddress') : getUserDetails('Emailaddress')).'" size="25" autocomplete="off" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Wachtwoord</td> <td><input type="password" name="password" value="" size="25" autocomplete="off" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Bevestig wachtwoord</td> <td><input type="password" name="confirm_password" value="" size="25" autocomplete="off" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td> <td><input type="submit" name="general" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
echo '</div>';

echo '<div id="quota">';

if(isset($errorMessage['quota']) && count($errorMessage['quota'] > 0))
{
echo '<p class="error"><b>Er is een probleem opgetreden:</b><br />';

foreach($errorMessage['quota'] as $message)
{
echo '- '.$message.'<br />';
}

echo '</p>';
}

echo '<form method="post">';
echo '<table id="edit" class="user">';
echo '<tr>';
echo '<td>Eigen quota</td> <td><select name="quotasetting">'.(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '1' ? '<option value="1" selected="selected">Ja</option><option value="0">Nee</option>' : '') : '<option value="1" '.(getUserDetails('Quota overrides') == 'yes' ? 'selected="selected"' : '').'>Ja</option>').(isset($_POST['quotasetting']) ? ($_POST['quotasetting'] == '0' ? '<option value="1">Ja</option><option value="0" selected="selected">Nee</option>' : '') : '<option value="0" '.(getUserDetails('Quota overrides') == 'no' ? 'selected="selected"' : '').'>Nee</option>').'</select></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Warning level</td> <td><input type="text" name="warninglevel" value="'.(isset($_POST['warninglevel']) ? formValue('warninglevel') : (getUserDetails('Warning level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Warning level'), -2) == 'KB' ? ''.round(getUserDetails('Warning level') / 1024, 0).'' : '').(substr(getUserDetails('Warning level'), -2) == 'MB' ? ''.round(getUserDetails('Warning level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
echo '</tr>';
echo '<tr>';
echo '<td>Soft level</td> <td><input type="text" name="softlevel" value="'.(isset($_POST['softlevel']) ? formValue('softlevel') : (getUserDetails('Soft level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Soft level'), -2) == 'KB' ? ''.round(getUserDetails('Soft level') / 1024, 0).'' : '').(substr(getUserDetails('Soft level'), -2) == 'MB' ? ''.round(getUserDetails('Soft level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
echo '</tr>';
echo '<tr>';
echo '<td>Hard level</td> <td><input type="text" name="hardlevel" value="'.(isset($_POST['hardlevel']) ? formValue('hardlevel') : (getUserDetails('Hard level') == 'unlimited' ? '0' : '').(substr(getUserDetails('Hard level'), -2) == 'KB' ? ''.round(getUserDetails('Hard level') / 1024, 0).'' : '').(substr(getUserDetails('Hard level'), -2) == 'MB' ? ''.round(getUserDetails('Hard level'), 0).'' : '')).'" size="3" autocomplete="off" />MB</td>';
echo '</tr>';
echo '<tr>';
echo '<td></td> <td><input type="submit" name="quota" value="Opslaan" /> <input type="submit" name="cancel" value="Annuleren" /></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
echo '</div>';
?>
Maar mijn pagina bestaat uit verschillende tabjes door middel van <div id="quota">, <div id="general">. Deze divjes moeten dus de pagina's/tabjes scheiden. Dat kan dan niet zoals Michael - het vermeld volgens mij.
natuurlijk kan dat wel.
Misschien wordt het overzichtelijker als je eerst je script opgebouwd denkt als


<?php
// doe een hoop validaties en evt een header()
include 'tab1.php';

// doe weer validaties en evt een header()
include 'tab2.php';

// en nod een keer
include 'tab3.php';
?>


Dat vereist dus dat je evenzoveel "view"files voor je tabs aanmaakt.

Je hebt nu nog steeds hetzelfde probleem, maar nu doen we een aanpassing:



<?php
// doe een hoop validaties en evt een header()

// doe weer validaties en evt een header()

// en nod een keer

include 'tab1.php';
include 'tab2.php';
include 'tab3.php';
?>


dus wat eerder al gezegd wordt:
doe eerst je complete php afhandeling (die in feite gewoon vars vult met de benodigde waarden)
en toon dan eventueel pas wat
Gerben Kwakkel op 17/01/2014 11:31:11

Maar mijn pagina bestaat uit verschillende tabjes door middel van <div id="quota">, <div id="general">. Deze divjes moeten dus de pagina's/tabjes scheiden. Dat kan dan niet zoals Michael - het vermeld volgens mij.


Heb je de toegevoegde code al bekeken?

Reageren