Mens of computer (zelf gemaakt)

Status
Niet open voor verdere reacties.

gebruiker241

Gebruiker
Lid geworden
8 mrt 2008
Berichten
209
Beste helpmij-ers
Ik ben 12 jaar en kan aardig php maar vind het nog wel lastig, ik heb nu een script waar in de computer kijkt of je mens of computer bent:


PHP:
<?php

$cijfer = rand(2, 50);
$som = 1;

$uitkomst = $cijfer - $som;

echo "Voor het cijver: ";
echo $cijfer;
echo " komt ";
echo $uitkomst;


?>
				<form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>/test.php" onsubmit="return ValidateForm()" method="post">
				<td>Mens of computer bevestiging.</td>
				<td width="80%"><input type="text" name="antwoord_van_gebruiker"
				<?php if(isset($_POST['bevestiging'])) { echo "value='".$_POST['antwoord_van_gebruiker']."'"; } ?> maxlength="2" />

				<?php
				if(isset($_POST['bevestiging'])) {
				if($_POST['antwoord_van_gebruiker']) == '.$uitkomst.' {
				echo "Je hebt je gebruikersnaam leeggelaten.";
				}else{
				echo "goed";
				}
				}
				?>
<th colspan="2"><input type="submit" name="bevestiging" value="Bevestig"></th>


Maar ik krijg nu een error:


Parse error: syntax error, unexpected T_BOOLEAN_AND in /home/*******/domains/********.nl/public_html/test.php on line 21


lijn 21 = if(isset($_POST['bevestiging'])) {

Alvast bedankt
 
Ik denk dat de fout in de regel eronder zit:
Code:
if($_POST['antwoord_van_gebruiker']) == '.$uitkomst.' {
zou moeten zijn
Code:
if($_POST['antwoord_van_gebruiker'] == '.$uitkomst.') {
het haakje stond op de verkeerde plaats.
 
Je matched tegen een string, niet tegen een getal.

Je moet
PHP:
$_POST['veld'] == $getal
doen, zonder aanhalingstekens als je tegen de inhoud van $getal wil controleren ipv tegen het woord "$getal"
 
Dit:

PHP:
if($_POST['antwoord_van_gebruiker'] == '.$uitkomst.') {

is nog steeds vaag. Ik neem aan dat je dit bedoelt:

PHP:
if ( $_POST[ 'antwoord_van_gebruiker' ] == $uitkomst ) {

Daarnaast heb je de berichten verkeerd om staan, als het antwoord klopt, zeg jij dat het niet klopt en vice versa.

[EDIT]
Frats, je was me voor :o
[/EDIT]
 
Dit:

PHP:
if($_POST['antwoord_van_gebruiker'] == '.$uitkomst.') {

is nog steeds vaag. Ik neem aan dat je dit bedoelt:

PHP:
if ( $_POST[ 'antwoord_van_gebruiker' ] == $uitkomst ) {

Daarnaast heb je de berichten verkeerd om staan, als het antwoord klopt, zeg jij dat het niet klopt en vice versa.

[EDIT]
Frats, je was me voor :o
[/EDIT]

Nu, okal is het goed, is het fout zecht hij:

PHP:
<?php
 
$cijfer = rand(2, 50);
$som = 1;
 
$uitkomst = $cijfer - $som;
 
echo "Voor het cijver: ";
echo $cijfer;
echo " komt ";
echo $uitkomst;
 
 
?>
                <form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>/test.php" onsubmit="return ValidateForm()" method="post">
                <td>Mens of computer bevestiging.</td>
                <td width="80%"><input type="text" name="antwoord_van_gebruiker"
                <?php if(isset($_POST['bevestiging'])) { echo "value='".$_POST['antwoord_van_gebruiker']."'"; } ?> maxlength="2" />
 
                <?php
                if(isset($_POST['bevestiging'])) {
                if ( $_POST['antwoord_van_gebruiker'] == $uitkomst ) { 
                echo "Je hebt je gebruikersnaam leeggelaten.";
                }else{
                echo "goed";
                }
                }
                ?>
<th colspan="2"><input type="submit" name="bevestiging" value="Bevestig"></th>
 
Laatst bewerkt:
Uit je eerdere post:

PHP:
if ( /* controle */ ) {
  echo "Je hebt je gebruikersnaam leeggelaten.";
}else{
  echo "goed";
}

uit je laatste post:

PHP:
if ( /* controle */ ) { 
  echo "Je hebt je gebruikersnaam leeggelaten.";
}else{
  echo "goed";
}

Lijkt me dus niet dat je ze omgewisseld hebt.
 
Uit je eerdere post:

PHP:
if ( /* controle */ ) {
  echo "Je hebt je gebruikersnaam leeggelaten.";
}else{
  echo "goed";
}

uit je laatste post:

PHP:
if ( /* controle */ ) { 
  echo "Je hebt je gebruikersnaam leeggelaten.";
}else{
  echo "goed";
}

Lijkt me dus niet dat je ze omgewisseld hebt.



verkeerde gepost*, heb het zelfde wat er staat maar dan omgewisseld ja...
 
Je hoeft niet steeds mijn post te quoten. Maar post even de goede versie dan.
 
PHP:
<?php
 
$cijfer = rand(2, 50);
$som = 1;
 
$uitkomst = $cijfer - $som;
 
echo "Voor het cijver: ";
echo $cijfer;
echo " komt ";
echo $uitkomst;
 
 
?>
                <form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>/test.php" onsubmit="return ValidateForm()" method="post">
                <td>Mens of computer bevestiging.</td>
                <td width="80%"><input type="text" name="antwoord_van_gebruiker"
                <?php if(isset($_POST['bevestiging'])) { echo "value='".$_POST['antwoord_van_gebruiker']."'"; } ?> maxlength="2" />
 
                <?php
                if(isset($_POST['bevestiging'])) {
		if($_POST['antwoord_van_gebruiker'] == '.$uitkomst.') {
                echo "Goed";
                }else{
                echo "Fout";
                }
                }
                ?>
<th colspan="2"><input type="submit" name="bevestiging" value="Bevestig"></th>
 
Heb je onze voorgaande posts wel gelezen? Met name die van Frats en die van mij meteen erna...
 
Vervang in de code die je als laatst gepost hebt, '.$uitkomst.' door $uitkomst
 
Alles blijft nog steeds fout okal is het goed...

weer mijn code:

PHP:
<?php
 
$cijfer = rand(2, 50);
$som = 1;
 
$uitkomst = $cijfer - $som;
 
echo "Voor het cijver: ";
echo $cijfer;
echo " komt ";
echo $uitkomst;
 
 
?>
                <form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>/test.php" onsubmit="return ValidateForm()" method="post">
                <td>Mens of computer bevestiging.</td>
                <td width="80%"><input type="text" name="antwoord_van_gebruiker"
                <?php if(isset($_POST['bevestiging'])) { echo "value='".$_POST['antwoord_van_gebruiker']."'"; } ?> maxlength="2" />
 
                <?php
                if(isset($_POST['bevestiging'])) {
        if($_POST['antwoord_van_gebruiker'] == $uitkomst) {
                echo "Goed";
                }else{
                echo "Fout";
                }
                }
                ?>
<th colspan="2"><input type="submit" name="bevestiging" value="Bevestig"></th>
 
Dat is ook wel logisch eigenlijk. Je maakt weer een nieuwe random waarde als de pagina verstuurd is. Je kunt het beste de random waarde opslaan in een sessie. Zoiets:

PHP:
<?php

  session_start();

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

    if ( $_POST[ 'uitkomst' ] == $_SESSION[ 'uitkomst' ] ) {

      echo 'Je had de uitkomst goed';

    } else {

      echo 'Je had het antwoord fout';

    }

  } else {

    $cijfer = rand ( 2, 50 );
    $som = 1;

    $_SESSION[ 'uitkomst' ] = $cijfer - $som;

    echo '<form method="post" action="">';
    echo 'Voor ', $cijfer, ' komt ', $cijfer - $som;
    echo '<input type="text" name="uitkomst" />';
    echo '<input type="submit" name="submit" value="Controleer" />'; 
    echo '</form>';

  }

?>

Styling en dergelijke moet je zelf maar doen...
 
Thnx man! nu ff inbouwen zal daar vast ook problemen mee krijgen maja :thumb:

Edit:
Inbouwen werkt niet echt... ik heb mijn registreren.php geback-upt en mijn check.php ook (die van jou dus :D)

Maar nu heb ik dus dit:

PHP:
<?php
 
  session_start();
 
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
 
    if ( $_POST[ 'uitkomst' ] == $_SESSION[ 'uitkomst' ] ) {
 
      echo 'Je had de uitkomst goed';

if(isset($_SESSION['id'])) {
	echo "Je bent al geregisteerd, <a href='index.php'>Ga terug</a>.";
	die();
}

function checkRaretekens($string) {
	if(!strpos($string," ") && !strpos($string,"'") && !strpos($string,"\\") && !strpos($string,"/")) {
		return true;
	}else{
		return false;
	}
}

if(isset($_POST['registreren']) && !empty($_POST['gebruikersnaam']) && !empty($_POST['wachtwoord']) && !empty($_POST['wachtwoordh']) && !empty($_POST['email']) && !empty($_POST['dag']) && !empty($_POST['maand']) && !empty($_POST['jaar']) && $_POST['wachtwoord'] == $_POST['wachtwoordh'] && !strpos($_POST['gebruikersnaam']," ") && !strpos($_POST['gebruikersnaam'],"'") && !strpos($_POST['gebruikersnaam'],"/")  && !strpos($_POST['gebruikersnaam'],"´") && strlen($_POST['gebruikersnaam']) >= 4 && $_POST['gebruikersnaam'] != "admin" && $_POST['gebruikersnaam'] != "<noscript>" && $_POST['gebruikersnaam'] != "<noscript />" && $_POST['gebruikersnaam'] != "<noscript >" && strpos($_POST['gebruikersnaam'],"<") == false) {

	echo $doe->registeren($_POST['gebruikersnaam'],$_POST['wachtwoord'],$_POST['dag'],$_POST['maand'],$_POST['jaar'],$_POST['email']);
	
}else{
	?>
	<script language="javascript" src="js/registratie.js" type="text/javascript"></script>
	<form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>?p=registreren" onsubmit="return ValidateForm()" method="post">
		<table>
			<tr>
				<td colspan="3">Registreren.</td>
			</tr>
			<tr>
				<td rowspan="7">
				</td>
			</tr>
			<tr>
				<td>Gebruikersnaam</td>
				<td width="80%"><input type="text" name="gebruikersnaam" 
					<?php if(isset($_POST['registreren'])) { echo "value='".$_POST['gebruikersnaam']."'"; } ?> maxlength="25" />
					
					<?php 
						if(isset($_POST['registreren']) && empty($_POST['gebruikersnaam'])) {
							echo "Je hebt je gebruikersnaam leeggelaten.";
						}
						if(isset($_POST['registreren']) && !empty($_POST['gebruikersnaam'])) {
							echo "Foute gebruikersnaam";
						}
						if(isset($_POST['registreren']) && strpos($_POST['gebruikersnaam']," ")) {
							echo "Spaties zijn niet toegestaan.";
						}
						if(isset($_POST['registreren']) && strpos($_POST['gebruikersnaam'],"/")) {
							echo "Er bevinden zich rare tekens in de naam.";
						}
						if(isset($_POST['registreren']) && strpos($_POST['gebruikersnaam'],"´")) {
							echo "Er bevinden zich rare tekens in de naam.";
						}
						if(isset($_POST['registreren']) && strpos($_POST['gebruikersnaam'],"'")) {
							echo "Er bevinden zich rare tekens in de naam.";
						}
						if(isset($_POST['registreren']) && strlen($_POST['gebruikersnaam']) < 4) {
							echo "Je gebruikersnaam moet uit 4 of meer tekens bestaan.";
						}
							
					?>
					</td>
			</tr>
			<tr>
				<td>Wachtwoord</td>
				<td><input type="password" name="wachtwoord" 
					<?php if(isset($_POST['registreren'])) { echo "value='".$_POST['wachtwoord']."'"; } ?> maxlength="255" />
					
					<?php 
						if(isset($_POST['registreren']) && empty($_POST['wachtwoord'])) {
							echo "Je hebt je wachtwoord leeggelaten.";
						}
						
						if(isset($_POST['registreren']) && $_POST['wachtwoord'] != $_POST['wachtwoordh']) {
							echo "De wachtwoorden zijn niet hetzelfde.";
						}
					?>
					</td>
			</tr>
			<tr>
				<td>Wachtwoord</td>
				<td><input type="password" name="wachtwoordh" 
					<?php if(isset($_POST['registreren'])) { echo "value='".$_POST['wachtwoordh']."'"; } ?> maxlength="255" />
					
					<?php 
						if(isset($_POST['registreren']) && empty($_POST['wachtwoordh'])) {
							echo "Je hebt geen wachtwoord herhalen ingevult.";
						}
					?>
					</td>
			</tr>
			<tr>
				<td>Geboortedatum</td>
				<td>
					<select name="dag">
						<?php
						$dag = range(1,31);
						foreach($dag as $var) {
							echo "<option value='".$var."'>".$var."</option>";
						}
						?>
					</select>
					<select name="maand">
						<?php
						$maand = range(1,12);
						foreach($maand as $var) {
							echo "<option value='".$var."'>".$var."</option>";
						}
						?>
					</select>
					<select name="jaar">
						<?php
						$jaar = range(date("Y") - 4,1930);
						foreach($jaar as $var) {
							echo "<option value='".$var."'>".$var."</option>";
						}
						?>
					</select>
				</td>
			</tr>
			<tr>
				<td>E-mail</td>
				<td><input type="text" name="email"
					<?php if(isset($_POST['registreren'])) { echo "value='".$_POST['email']."'"; } ?> maxlength="60" />
					
					<?php 
						if(isset($_POST['registreren']) && empty($_POST['email'])) {
							echo "Je hebt je email leeggelaten.";
						}
					?>
					</td>
			</tr>
			<tr>
				<th colspan="2"><input type="submit" name="registreren" value="Registreren"></th>
			</tr>
		</table>
	</form>
	<?php
} 
    } else {
 
      echo 'Je had het antwoord fout';
 
    }
 
  } else {
 
    $cijfer = rand ( 2, 50 );
    $som = 1;
 
    $_SESSION[ 'uitkomst' ] = $cijfer - $som;
 
    echo '<form method="post" action="">';
    echo 'Voor ', $cijfer, ' komt ', $cijfer - $som;
    echo '<input type="text" name="uitkomst" />';
    echo '<input type="submit" name="submit" value="Controleer" />';
    echo '</form>';
 
  }
 
?>

Als ik nou een account wil registreren en dan op registreer klik zegt hij dat het antwoord fout is ROFL XD
 
Laatst bewerkt:
Het gaat mij er ook niet om, dat je per sé dit script gaat gebruiken, maar wel dat de opbouw anders is. Je maakt nu maar één keer een random getal aan en bewaart dat, zodat het ook gebruikt kan worden als het formulier verstuurd is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan