Hilfe, rechen captcha funzt nich

Hier werden Probleme rund um das Rechen Captcha behandelt

Moderator: frameguard

Hilfe, rechen captcha funzt nich

Beitragvon Problem bär bruno » 10.08.2007, 21:13

Hallo zusammen!

Im moment bin ich was am verzwifeln :roll:
ich hab mir nen gästebuch gecodet, nu will ich nen captcha einbauen
soweit sogut nun krieg ich aber ne fehlermeldung:

Parse error: syntax error, unexpected $end in /usr/export/www/vhosts/funnetwork/hosting/wbcc/wbcc_01/Kopievonguestbook/eintragen.php on line 171

Nur in der 171 zeile ist nix auser </html> und da kann wohl kein fehler sein, also muss es woanders sein. :shock:

Hier mal die Url zum Gästebuch Klick hier zum GB


Wenn ich den den roten code rausnehme, geht es, also es wird das rechen-captcha angezeigt. Nun möchte ich die session drin haben und eine fehlermeldung erhalten wenn der code falsch ist, wie geht das bloß?

So hier ist mal der code von meiner eintragen.php
<?php
session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

include("config.php");
if($top == "new")
{
setlocale(LC_TIME, "ge","de_DE");
$date = strftime("%H:%M - %d.%m.%Y", time());
if($newname == "")
{
echo "<p align=center>Sie haben keinen Namen angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
exit;
}
if($newtext == "")
{
echo "<p align=center>Sie haben kein text angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
exit;
}
if($newemail == "")
{
echo "<p align=center>Sie haben keine E-mailadresse angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
exit;
}
if($html == "off")
{
$newtext = htmlentities($newtext);
}
if ($html == "off")
{
$newtext = stripslashes($newtext);
}
include("data.txt");
$newname = ereg_replace(" ", "!", $newname);
$datei = fopen("data.txt", "w");
$newtext = nl2br($newtext);
include("badwords.txt");
$zaehler = "0";
while($badword[$zaehler] != "")
{
$newtext = ereg_replace($badword[$zaehler],$re_by, $newtext);
$zaehler++;
}
if($datei)
{
fputs($datei, "<?php \n \$name[] = \"$newname\"; \n" . "\$email[] = \"$newemail\";\n");
fputs($datei, "\$pagename[] = \"$newpagename\"; \n" . "\$pageurl[] = \"$newpageurl\";\n" . "\$text[] = \"$newtext\";\n");
fputs($datei, "\$datum[] = \"$date\";\n");
fclose($datei);
}
$datei = fopen("data.txt", "a");
$count = "0";
$max--;
while($name[$count] != "")
{
fputs($datei, "\$name[] = \"$name[$count]\";\n");
fputs($datei, "\$email[] = \"$email[$count]\";\n");
fputs($datei, "\$pagename[] = \"$pagename[$count]\";\n");
fputs($datei, "\$pageurl[] = \"$pageurl[$count]\";\n");
fputs($datei, "\$text[] = \"$text[$count]\";\n");
fputs($datei, "\$datum[] = \"$datum[$count]\";\n");
$count++;
if($count == $max)
{
break;
}
}
include("thanks.htm");
exit;
}
?>


<html>
<head>
<title></title>
<script type="text/javascript">
var win=null;
function NewWindow(mypage,myname,w,h,pos,infocus){
if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen.height-h)/2:100;}
else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20}
settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no";win=window.open(mypage,myname,settings);
win.focus();}
var n = 1;

var n = 1;
function add(code) {
document.forml.newtext.value += " " + code ;
}
</script>

</head>
<body bgcolor="<?php echo "$backcolor" ?>">
<form name="forml" action="<?php echo "$PHP_SELF?top=new" ?>" method="post" >
<table width="469" border="0" cellspacing="0" cellpadding="0" align="center" background="<?php echo "$backcolor2" ?>">
<tr>
<td colspan="3" align="center" ><b>Dein Eintrag:</b></td>
</tr>
<tr>
<td width="94">Name:</td>
<td colspan="2"><input type="text" name="newname"></td>
</tr>
<tr>
<td>Email:</td>
<td colspan="2"><input type="text" name="newemail"></td>
</tr>
<tr>
<td>Hp-name:</td>
<td colspan="2"><input type="text" name="newpagename"></td>
</tr>
<tr>
<td>Homepage:</td>
<td colspan="2"><input type="text" name="newpageurl"></td>
</tr>
<tr>
<td valign="top"><b>Text:&nbsp;</b><br>
<td colspan="2"><textarea name="newtext" cols="50" rows="10"></textarea></td>
</tr>
<td valign="top"><br></td>
<td valign="top" width="125"><img src="rechen-captcha.php"></td>
<td valign="top" width="250"><input type="text" name="sicherheitscode" size="5"></td>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top" width="125"><input type="submit" name="Button" value="Absenden" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; width: 125px;"></td>
<td valign="top" width="250"><input type="reset" name="Submit2" value="Zur&uuml;cksetzen" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; width: 125px;"></td>
</tr>

<tr>
<td height="73">&nbsp;</td>
<td colspan="2">
<img onClick="add(':-)');" src="images/grins.png" border="0" style="cursor:pointer">
<img onClick="add(':-(');" src="images/neutral.png" border="0" style="cursor:pointer">
<img onClick="add(':-|');" src="images/cry.png" border="0" style="cursor:pointer">
<img onClick="add(':cool:');" src="images/cool.png" border="0" style="cursor:pointer">
<img onClick="add(':lach:');" src="images/lach.png" border="0" style="cursor:pointer">
<img onClick="add(':lol:');" src="images/lol.png" border="0" style="cursor:pointer">
<img onClick="add(':mrblue:');" src="images/mrblue.png" border="0" style="cursor:pointer">
<img onClick="add(':confused:');" src="images/confused.png" border="0" style="cursor:pointer">
<img onClick="add(':mad:');" src="images/mad.png" border="0" style="cursor:pointer">
<img onClick="add(':razz:');" src="images/razz.png" border="0" style="cursor:pointer">
<img onClick="add(':red:');" src="images/red.png" border="0" style="cursor:pointer">
<img onClick="add(':sad:');" src="images/sad.png" border="0" style="cursor:pointer">
<img onClick="add(':schreck:');" src="images/schreck.png" border="0" style="cursor:pointer">
<img onClick="add(':smile:');" src="images/smile.png" border="0" style="cursor:pointer">
<img onClick="add(':zwink:');" src="images/zwink.png" border="0" style="cursor:pointer">
<img onClick="add(':eek:');" src="images/eek.png" border="0" style="cursor:pointer">
<img onClick="add(':frage:');" src="images/frage.png" border="0" style="cursor:pointer">
<img onClick="add(':ausrufe:');" src="images/ausrufe.png" border="0" style="cursor:pointer">
<img onClick="add(':geek:');" src="images/geek.png" border="0" style="cursor:pointer">
<img onClick="add(':ugeek:');" src="images/ugeek.png" border="0" style="cursor:pointer">
<img onClick="add(':evil:');" src="images/evil.png" border="0" style="cursor:pointer">
<img onClick="add(':uevil:');" src="images/uevil.png" border="0" style="cursor:pointer"><br>
<a href="<?php echo "guestbook.php" ?>">Zur&uuml;ck zum G&auml;stebuch</a></td>
</tr>
</table>
</form>
</body>
</html>




Falls jemand eine lösung hat, wäre sehr nett sie mal zu posten! :lol:
Problem bär bruno
 
Beiträge: 4
Registriert: 10.08.2007, 19:52

Beitragvon Steef389 » 10.08.2007, 22:43

Parse error: unexpected $end:
Du hast irgendwo eine Klammer geöffnet hast, die du nicht schließt!

ich danke das du diese nicht schließt:
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){

Füg hier mal noch die farbige ein:
include("thanks.htm");
exit;
}
}
?>
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon Problem bär bruno » 10.08.2007, 23:11

Perfekt, es funzt! Steef389

nu krieg ich aber keine fehlermeldungen mehr,
also das kein name, email, u.s.w und das captcha falls es falsch ist,
die meldung krieg ich auch nicht :(


jemand ne idee? :roll:
Problem bär bruno
 
Beiträge: 4
Registriert: 10.08.2007, 19:52

Beitragvon Steef389 » 11.08.2007, 12:28

So müsste es funktionieren.
Habs jetzt aber nicht getestet.
Außerdem würde ich nicht nur prüfen, ob eine E-Mail-Adresse eingegeben wurde, sondern auch, ob sie gültig ist.
Bei Fragen schreibs hier rein.
Code: Alles auswählen
<?php
session_start();
function encrypt($string, $key) {
   $result = '';
   for($i=0; $i<strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)+ord($keychar));
      $result.=$char;
   }
   return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
include("config.php");
if($top == "new")
{
   setlocale(LC_TIME, "ge","de_DE");
   $date = strftime("%H:%M - %d.%m.%Y", time());
   if($newname == "")
   {
      echo "<p align=center>Sie haben keinen Namen angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
      exit;   
   }
   if($newtext == "")
   {
      echo "<p align=center>Sie haben kein text angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
      exit;
   }
   if($newemail == "")
   {
      echo "<p align=center>Sie haben keine E-mailadresse angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
      exit;
   }
   if(!isset($_SESSION['rechen_captcha_spam']) || $sicherheits_eingabe != $_SESSION['rechen_captcha_spam'])
   {
      echo "<p align=center>Der Sicherheitscode war falsch<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>";
      exit;
   }
   if($html == "off")
   {
      $newtext = htmlentities($newtext);
   }
   if ($html == "off")
   {
      $newtext = stripslashes($newtext);
   }
   unset($_SESSION['rechen_captcha_spam']);
   include("data.txt");
   $newname = ereg_replace(" ", "!", $newname);
   $datei = fopen("data.txt", "w");
   $newtext = nl2br($newtext);
   include("badwords.txt");
   $zaehler = "0";
   while($badword[$zaehler] != "")
   {
      $newtext = ereg_replace($badword[$zaehler],$re_by, $newtext);
      $zaehler++;
   }
   if($datei)
   {
      fputs($datei, "<?php \n \$name[] = \"$newname\"; \n" . "\$email[] = \"$newemail\";\n");
      fputs($datei, "\$pagename[] = \"$newpagename\"; \n" . "\$pageurl[] = \"$newpageurl\";\n" . "\$text[] = \"$newtext\";\n");
      fputs($datei, "\$datum[] = \"$date\";\n");
      fclose($datei);
   }
   $datei = fopen("data.txt", "a");
   $count = "0";
   $max--;
   while($name[$count] != "")
   {
      fputs($datei, "\$name[] = \"$name[$count]\";\n");
      fputs($datei, "\$email[] = \"$email[$count]\";\n");
      fputs($datei, "\$pagename[] = \"$pagename[$count]\";\n");
      fputs($datei, "\$pageurl[] = \"$pageurl[$count]\";\n");
      fputs($datei, "\$text[] = \"$text[$count]\";\n");
      fputs($datei, "\$datum[] = \"$datum[$count]\";\n");
      $count++;
      if($count == $max)
      {
         break;
      }
   }
   include("thanks.htm");
   exit;
}
?>
...


PS: Für
echo "...";
exit;

könntest du kürzer die("..."); schreiben
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon Problem bär bruno » 11.08.2007, 14:41

Funktioniert perfekt, danke Steef389!


Aber wie kann ich jetzt prüfen ob die email auch gültig ist?


Danke für den kleinen tipp, die(".."); :wink: habs direkt mal gemacht.
Problem bär bruno
 
Beiträge: 4
Registriert: 10.08.2007, 19:52

Beitragvon Steef389 » 11.08.2007, 16:47

füge oben nach
Code: Alles auswählen
Function encrypt()
...
return ...
}

diese Funktion ein:
Code: Alles auswählen
function checkmail($email){
   if (! ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)) {
      $i = 0;
   } else {
      $i = 1;
   }
   return $i;
}


und nach
Code: Alles auswählen
if($newemail == "")
{
   die("<p align=center>Sie haben keine E-mailadresse angegeben<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>");

das ein:
Code: Alles auswählen
if (checkmail($newemail) == 0)
{
  die("<p align=center>Bitte geben Sie eine gültige E-mailadresse ein<br><INPUT TYPE=BUTTON VALUE='Zurück' onClick='history.back()'></p>");
}
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon Problem bär bruno » 11.08.2007, 17:34

Funktioniert perfekt :D :D :D
falls ich mal wieder probleme habe, meld ich mich wieder!

Danke Steef389 für deine hilfe!
Problem bär bruno
 
Beiträge: 4
Registriert: 10.08.2007, 19:52


Zurück zu Rechen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron