Gemischtes Captcha (Tutorial)

Probleme, zu anderen Scripten auf stoppt-den-spam.info

Moderator: frameguard

Beitragvon TheGear » 12.12.2007, 20:01

TheGear
 
Beiträge: 7
Registriert: 10.12.2007, 19:00

Beitragvon frameguard » 12.12.2007, 20:44

Mit einer Fehlermeldung könnten wir mehr anfangen. ;)
Also, das .PNG-Hintergrundbild ist vorhanden (hab ich gecheckt). Den Schriftpfad findet er auch, sonst käme eine Fehlermeldung.
Tja.
Im Script finde ich keinen Fipptehler, ich muß gestehen, ich bin überfragt, wo der Fehler sein könnte. :(
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon TheGear » 12.12.2007, 22:15

Ich gehe davon aus das, dass problem an den eigenen Schriftarten liegt.
Aber trotzdem danke für deine bemühungen, finde es echt klasse das wenigstens einer noch hilft hier ^^
TheGear
 
Beiträge: 7
Registriert: 10.12.2007, 19:00

Beitragvon frameguard » 12.12.2007, 22:43

Tja, ich hab die Zeit nicht mehr so, sonst würde ich mich mehr drum kümmern, immerhin bin ich mod. :oops: Aber gottlob dauert dieser ****-Kurs nur noch ungefähr eine Woche (einen EDV-Pro in einen ECDL-Kurs stecken, nur damit ich mich nicht selbständig machen kann, DAS fällt nur dem Arbeitsamt ein...). Nach Weihnachten sollte ich eigentlich wieder voll da sein - sofern die Ski Challenge '08 das zuläßt, that is. ;)
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon Steef389 » 16.12.2007, 15:35

Also, die Fehlermeldung auf diesem Server (http://thegear.de/cap/) ist:
Code: Alles auswählen
Warning:  imagettftext(): Could not find/open font in /var/www/s23b224/html/cap/captcha/captcha.php on line 32


Meiner Meinung nach solltest du mal den Schriftpfad überprüfen und auf Groß- und Kleinschreibung achten.
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon TheGear » 29.12.2007, 23:00

Danke, aber das ist alles korrekt, sonst würde es ja auch Lokal nicht laufen :)
TheGear
 
Beiträge: 7
Registriert: 10.12.2007, 19:00

Beitragvon patEwing » 04.02.2008, 02:52

Ich hätte mal eine Frage zum Script-Einbau im (gemischt)-Tutorial: Was habe ich mir unter "ursprüngliches Script" vorzustellen. Ich habe noch nicht so viel Ahnung von php, aber was ich weiß ist doch, das ich immer erst ein tag zumachen muss, bevor ich das nächste aufmachen kann. wo genaui trage ich den ersten Teil ein, was folgt dann und wann schließe ich es? Die Farben im Tutorial deuten ja bereits darauf hin, das

Code: Alles auswählen
<?php


nicht aktiv ist. Dann wird mir aber immer eine Fehlermeldung ausgewurfen. Was muss ich am "ursprünglichen Script" noch verändern? Bis zum Einbau ins Script lief alles bestens, aber jetzt komme ich nicht weiter. Vielleicht hilft ja ein-Code-Sample:

Code: Alles auswählen
<?php
function url2link($text, $target = "_blank", $maxchars = 25, $leftchars = 20, $rightchars = 5, $fill = "...") {
   return preg_replace("!((http|https|ftp)://[\w\.]{2,}[/\w\-\.\?\&\=\#\:]*[/\w\-\?\&\=\#\:]{1,})!e",
   "'<a href=\"\\1\" target=\"$target\" title=\"\\1\">'
   .(strlen('\\1')>=$maxchars ? substr('\\1',0,$leftchars).'$fill'.substr('\\1',strlen('\\1')-$rightchars,$rightchars):'\\1').'</a>'", $text);
}
echo url2link($thetext)
?>
<?php require_once('../../Connections/testverbindung.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['name'], "text"),
                       GetSQLValueString($_POST['entry'], "text"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['hompage'], "text"));

  mysql_select_db($database_testverbindung, $testverbindung);
  $Result1 = mysql_query($insertSQL, $testverbindung) or die(mysql_error());

  $insertGoTo = "../the_blogs/stefan.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_testverbindung, $testverbindung);
$query_stefan_guestbook = "SELECT * FROM guestbook ORDER BY ID DESC";
$stefan_guestbook = mysql_query($query_stefan_guestbook, $testverbindung) or die(mysql_error());
$row_stefan_guestbook = mysql_fetch_assoc($stefan_guestbook);
$totalRows_stefan_guestbook = mysql_num_rows($stefan_guestbook);

mysql_select_db($database_testverbindung, $testverbindung);
$query_links = "SELECT * FROM links ORDER BY links ASC";
$links = mysql_query($query_links, $testverbindung) or die(mysql_error());
$row_links = mysql_fetch_assoc($links);
$totalRows_links = mysql_num_rows($links);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/master.dwt" codeOutsideHTMLIsLocked="false" -->
<head><meta name="Keywords" content="blogs deR_onny Halle/Saale Halle (Saale) Webdesign Web Design Academic Texts Papers " />

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>slick visual poetry</title>
<script type="text/javascript">
<!--



function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>
<meta name="Keywords" content="Halle Saale Halle/Saale (Saale) Webdesign Web Design Blog" />
<link href="../../svp.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
#blende_links {
   position:absolute;
   left:848px;
   top:557px;
   width:221px;
   height:17px;
   z-index:501;
   background-color: #FFFFFF;
}
.Stil4 {font-size: 12}
.Stil5 {font-size: 12px}
-->
</style>
</head>

<body onload="MM_preloadImages('../pics/blogs_hover.png')">
<div id="navigation">
  <p class="Stil5"><span class="Stil2"><a href="../../index.php" target="_self" class="Stil17" onmouseover="MM_swapImage('Image12','','../pics/blogs_hover.png',1)" onmouseout="MM_swapImgRestore()">home<br />
  </a><a href="../academic/academic_texts.php" target="_self" class="Stil17" onmouseover="MM_swapImage('Image7','','../pics/studies_hover.png',1)" onmouseout="MM_swapImgRestore()">academic texts<br />
  </a><a href="../admin_surface/log_in.php" target="_self" onmouseover="MM_swapImage('Image11','','../pics/member_hover.png',1)" onmouseout="MM_swapImgRestore()">members' login<br />
  </a><a href="../portfolio.html" target="_blank">portfolio <br />
  </a><a href="../youtubes.php" target="_self">favourite youTubes<br />
  </a></span><a href="../music/slick-visual-music.html" target="_self" class="Stil2">music<br />
  </a><a href="../disclaimer.php" target="_self" class="Stil2">disclaimer</a></p>
</div>
<div id="blende_links"></div>
<p>&nbsp;</p>
<div class="Stil23" id="link_header">
  <p class="Stil25">hyperlinks 2 love <br />
    <span class="Stil4"><br />
  We hope you will like he following links: </span></p>
</div>
<p>&nbsp;</p>
<div id="nfo"><!-- InstanceBeginEditable name="entry" --><a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image13','','../pics/ronnys_blog_hover.png',1)"></a>
  <p style="font-size: 14px; font-family: Geneva, Arial, Helvetica, sans-serif; color: #E0DFE3"><a href="../the_blogs/ronny.php" target="_self" style="font-weight: bold">ronny's blog</a></p>
  <p style="font-size: 14px; font-family: Geneva, Arial, Helvetica, sans-serif; color: #E0DFE3"><a href="../the_blogs/stefan.php" target="_self" style="font-weight: bold">stefan's blog</a></p>
<!-- InstanceEndEditable -->
  <p><span class="Stil17"><span class="Stil25 Stil20"><strong>designed for:</strong></span><br />
  </span><a href="http://www.opera.com/download/" target="_blank"><img src="../pics/opera.png" alt="opera" width="30" height="30" /></a><a href="http://filehippo.com/download_firefox/" target="_blank"> <img src="../pics/firefox.png" alt="firefox" width="30" height="30" /><br />
  </a><span class="Stil17"><span class="Stil18"><span class="Stil22"><br />
  <span class="Stil25"><strong>visitors:</strong></span></span><br />
  </span><a href="http://www.blogcounter.de/" id="bclink" title="kostenloser Counter fuer Weblogs"><span id="bccount" style="font-size:8px">kostenloser Counter</span></a></span>
    <script type="text/javascript" src="http://track.blogcounter.de/js.php?user=bloggin_till_infinity&amp;style=1"></script>
</p>
</div>
<div id="header"><!-- InstanceBeginEditable name="what" --><span style="font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 36px; font-weight: bold"><span style="color: #996633">l</span>eave <span style="color: #996633">a</span> <span style="color: #996633">r</span>emark </span><!-- InstanceEndEditable --></div>
<div id="content"><!-- InstanceBeginEditable name="content" -->
  <div id="in_content">
    <p>&nbsp;</p>
      <form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
      <table align="left">
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">name:</td>
          <td><input type="text" name="name" value="" size="32" /></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right" valign="top">entry:</td>
          <td><textarea name="entry" cols="30" rows="5"></textarea>          </td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">email:</td>
          <td><input type="text" name="email" value="" size="32" /></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">hompage:</td>
          <td><input type="text" name="hompage" value="http://" size="32" /></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">password</td>
          <td><input type="text" name="sicherheitscode" size="5"></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">&nbsp;</td>
          <td><img src="../../captcha/captcha.php" alt="captcha" border="0" title="Sicherheitscode" /></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">&nbsp;</td>
          <td><input name="submit" type="submit" value="Datensatz einf&uuml;gen" /></td>
        </tr>
      </table>
      <input type="hidden" name="MM_insert" value="form1" />
    </form>

    <p>&nbsp;</p>
  </div>
<!-- InstanceEndEditable --></div>
<div id="what"><!-- InstanceBeginEditable name="what_is_it?" --><span style="font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; color: #666666">back to:</span>   <!-- InstanceEndEditable --></div>
<div id="hyperlinks"><!-- InstanceBeginEditable name="gals" -->
<table border="0">
  <?php do { ?>
    <tr>
      <td><?php echo url2link ($row_links['links']); ?></td>
    </tr>
    <?php } while ($row_links = mysql_fetch_assoc($links)); ?>
</table>
<!-- InstanceEndEditable --></div>

</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($stefan_guestbook);

mysql_free_result($links);
?>


Wo sollte ich die beiden Teile hinsetzen?
patEwing
 
Beiträge: 9
Registriert: 04.02.2008, 02:42

Beitragvon frameguard » 04.02.2008, 03:07

Der eine Script, captcha.php, ist eigenständig und wird als <img src="..."> eingebunden. Du hast den, so weit ich sehe, vollkommen korrekt eingebunden.

Schwieriger wird die Auswertung, also der zweite Teil.

Dein Script beginnt mit <? php.
An die Zeile hängst Du ein session_start(); an:
Code: Alles auswählen
<? php session_start();


Dann folgt (direkt danach):
Code: Alles auswählen
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"], '8t3479u97'); // key sollte ident sein mit captcha.php
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);


Und jetzt gerate ich in Schwierigkeiten, weil ich bei MySQL zusammen mit PHP immer ins Schwimmen gerate. Du solltest den Teil suchen, in dem die Eingabe ins Formular verarbeitet wird, und dort fügst Du die Zeilen ein:

Code: Alles auswählen
if(isset($_SESSION['captcha_spam']) && $sicherheits_eingabe == $_SESSION['captcha_spam'])
{
   unset($_SESSION['captcha_spam']);
}
else
{
   die("Falscher Sicherheitscode!");
}


Information ohne Gewähr, erstens ist 2 Uhr früh ;), und zweitens - wie gesagt, mit der Verbindung von MySQL und PHP habe ich nach wie vor so meine Schwierigkeiten. ;)
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon patEwing » 04.02.2008, 23:17

Ich habe jetzt den Code oben eingebunden und bekomme schon mal keine Fehlermeldung, was ich als erfolg werte. Nun habe ich versucht den "if ... else"-Teil an diversen Stellen einzubinden und habe dabei drei möglichen Effekte erzielt.

1.) Gleich nur die Anzeige "falscher Sicherheitscode"
2.)kein Unterschied egal ob Code eingegeben wird oder nicht (Eintrag ins GB erfolgt immer)
3.) Anzeige "falscher Sicherheitscode" auch wenn der korrekte Code eingegeben wurde. EDIT: Eintrag erfolgt trotzdem.

Ich reiß mir bald die Haare aus.
patEwing
 
Beiträge: 9
Registriert: 04.02.2008, 02:42

Beitragvon frameguard » 05.02.2008, 00:02

Welche Stellen waren das genau, und welche Variante führte zu welcher Fehlermeldung?
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon patEwing » 05.02.2008, 13:20

"session_start();" habe ich an das <? php ; nach dem Verbidungaufbau anghängt. Und nun zu den Fehlern:

Ich stelle mal den gesamten Code ein und schreibe den jeweils auftretenden Effekt (nach und nach) als Kommentar an der jeweiligen Stelle daneben.

<?php
function url2link($text, $target = "_blank", $maxchars = 25, $leftchars = 20, $rightchars = 5, $fill = "...") {
return preg_replace("!((http|https|ftp)://[\w\.]{2,}[/\w\-\.\?\&\=\#\:]*[/\w\-\?\&\=\#\:]{1,})!e",
"'<a href=\"\\1\" target=\"$target\" title=\"\\1\">'
.(strlen('\\1')>=$maxchars ? substr('\\1',0,$leftchars).'$fill'.substr('\\1',strlen('\\1')-$rightchars,$rightchars):'\\1').'</a>'", $text);
}

echo url2link($thetext)
?>
<?php require_once('../../Connections/testverbindung.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"], '8t3479u97'); // key sollte ident sein mit captcha.php
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
// nach Eingabe von richtigem/falschen Sicherheitscode stets Anzeige "falscher Sicherheitscode", kein Eintrag ins GB
return $theValue;

}

//"falscher Sicherheitscode" läd sofort

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}// sofortige Meldung: falscher Sicherheitscode bei Seitenvorschau
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));

mysql_select_db($database_testverbindung, $testverbindung);
$Result1 = mysql_query($insertSQL, $testverbindung) or die(mysql_error());

$insertGoTo = "../the_blogs/stefan.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
// "falscher Sicherheitscode" wird angezeigt, aber Eintragung erfolgt trotzdem (auch ohne code)
header(sprintf("Location: %s", $insertGoTo));
}
//"falscher Sicherheitscode" läd als erstes bei Seitenvorschau
mysql_select_db($database_testverbindung, $testverbindung);
$query_stefan_guestbook = "SELECT * FROM guestbook ORDER BY ID DESC";
$stefan_guestbook = mysql_query($query_stefan_guestbook, $testverbindung) or die(mysql_error());
$row_stefan_guestbook = mysql_fetch_assoc($stefan_guestbook);
$totalRows_stefan_guestbook = mysql_num_rows($stefan_guestbook);
// auch wenn es unwahrscheinlich schien habe ich es auch mal hier versucht. Auch ohne Erfolg:es wurde gleich bei Voschau "falscher Sicherheitscode" angezeigt.
mysql_select_db($database_testverbindung, $testverbindung);
$query_links = "SELECT * FROM links ORDER BY links ASC";
$links = mysql_query($query_links, $testverbindung) or die(mysql_error());
$row_links = mysql_fetch_assoc($links);
$totalRows_links = mysql_num_rows($links);

?>
Zuletzt geändert von patEwing am 05.02.2008, 16:28, insgesamt 3-mal geändert.
patEwing
 
Beiträge: 9
Registriert: 04.02.2008, 02:42

Beitragvon frameguard » 05.02.2008, 14:58

Eine Möglichkeit fällt mir dazu noch ein. Im Codeteil:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));

könntest Du das IF vom Captcha direkt zwischen die beiden If's setzen:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if(isset($_SESSION['captcha_spam']) && $sicherheits_eingabe == $_SESSION['captcha_spam'])
{
unset($_SESSION['captcha_spam']);
}
else
{
die("Falscher Sicherheitscode!");
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon patEwing » 05.02.2008, 15:36

frameguard hat geschrieben:Eine Möglichkeit fällt mir dazu noch ein. Im Codeteil:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));

könntest Du das IF vom Captcha direkt zwischen die beiden If's setzen:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if(isset($_SESSION['captcha_spam']) && $sicherheits_eingabe == $_SESSION['captcha_spam'])
{
unset($_SESSION['captcha_spam']);
}
else
{
die("Falscher Sicherheitscode!"); // sofortige Meldung: falscher Sicherheitscode bei Seitenvorschau
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));


Leider nicht. Ich gehe mal weiter alle Kombinationen durch und trage die Ergebnisse oberhalb ein. Vielleicht fällt ja noch jemandem etwas auf.

Ich habe auch schon überlegt, ob es daran liegen kann, dass ich die GD-Librarty nicht installiert habe. Aber dann würde das captcha doch erst gar nicht angezeigt werden. Deshalb gehe ich mal davon aus, dass es bei xampp schon mit dabei war. Oder etwa nicht?
patEwing
 
Beiträge: 9
Registriert: 04.02.2008, 02:42

Beitragvon Steef389 » 07.02.2008, 15:31

Wenn ich das richtig sehe, ist das eine Datei:
Code: Alles auswählen
<?php
function url2link($text, $target = "_blank", $maxchars = 25, $leftchars = 20, $rightchars = 5, $fill = "...") {
return preg_replace("!((http|https|ftp)://[\w\.]{2,}[/\w\-\.\?\&\=\#\:]*[/\w\-\?\&\=\#\:]{1,})!e",
"'<a href=\"\\1\" target=\"$target\" title=\"\\1\">'
.(strlen('\\1')>=$maxchars ? substr('\\1',0,$leftchars).'$fill'.substr('\\1',strlen('\\1')-$rightchars,$rightchars):'\\1').'</a>'", $text);
}

echo url2link($thetext)
?>
<?php require_once('../../Connections/testverbindung.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"], '8t3479u97'); // key sollte ident sein mit captcha.php
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
// nach Eingabe von richtigem/falschen Sicherheitscode stets Anzeige "falscher Sicherheitscode", kein Eintrag ins GB
return $theValue;

}

//"falscher Sicherheitscode" läd sofort

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}// sofortige Meldung: falscher Sicherheitscode bei Seitenvorschau
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));

mysql_select_db($database_testverbindung, $testverbindung);
$Result1 = mysql_query($insertSQL, $testverbindung) or die(mysql_error());

$insertGoTo = "../the_blogs/stefan.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
// "falscher Sicherheitscode" wird angezeigt, aber Eintragung erfolgt trotzdem (auch ohne code)
header(sprintf("Location: %s", $insertGoTo));
}
//"falscher Sicherheitscode" läd als erstes bei Seitenvorschau
mysql_select_db($database_testverbindung, $testverbindung);
$query_stefan_guestbook = "SELECT * FROM guestbook ORDER BY ID DESC";
$stefan_guestbook = mysql_query($query_stefan_guestbook, $testverbindung) or die(mysql_error());
$row_stefan_guestbook = mysql_fetch_assoc($stefan_guestbook);
$totalRows_stefan_guestbook = mysql_num_rows($stefan_guestbook);
// auch wenn es unwahrscheinlich schien habe ich es auch mal hier versucht. Auch ohne Erfolg:es wurde gleich bei Voschau "falscher Sicherheitscode" angezeigt.
mysql_select_db($database_testverbindung, $testverbindung);
$query_links = "SELECT * FROM links ORDER BY links ASC";
$links = mysql_query($query_links, $testverbindung) or die(mysql_error());
$row_links = mysql_fetch_assoc($links);
$totalRows_links = mysql_num_rows($links);

?>


Dann muss aber das session_satrt(); direkt hinter das erste <?php. Da wo du es hast, kann es gar nicht funktionieren, da davor eine Ausgabe ist (echo url2link($thetext) ). Eigentlich müsste sogar der Fehler "headers already sent" kommen.
Was uns auch helfen könnte, wären die (eventuell) vorhanden PHP-Fehler. (mit error_reporting(E_ALL);)

also müsste deine Datei jetzt so anfangen:
Code: Alles auswählen
<?php
session_start();
error_reporting(E_ALL);
function [...]


Schreib mal, ob PHP irgenwelche fehler ausgibt.
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon patEwing » 07.02.2008, 19:50

Interessante neu Entwicklung. Erst mal danke für den Tipp mit dem der "link-function". Ich habe sie erst mal zur Vereinfachung herausgenommen.
mit dem Code habe ich nun folgendes gemacht:

<?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"], '8t3479u97'); // key sollte ident sein mit captcha.php
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
error_reporting(E_ALL);
?>
<?php require_once('../../Connections/testverbindung.php'); ?><?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
if(isset($_SESSION['captcha_spam']) && $sicherheits_eingabe == $_SESSION['captcha_spam'])
{
unset($_SESSION['captcha_spam']);
}
else
{
die("Falscher Sicherheitscode!");

} // Interssanterweise wird nur an dieser Stelle beim Abschicken des Formulars die Fehlermeldung: "Notice: Undefined variable: sicherheits_eingabe in C:\Dokumente und Einstellungen\Stefan\Eigene Dateien\websites\wwwroot\test\guestbook\write_guestbook.php on line 71
+ Falscher Sicherheitscode!" angezeigt Dabei dächte ich doch, dass die Variable "sicherheitsangabe oben definiert wurde??? An allen anderen Stellen bleibt alles beim Alten: Die Anzeige "falscher Sicherheitscode" läd sofort beim Versuch der Seitenvorschau. Hilft das weiter?


return $theValue;}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['entry'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['hompage'], "text"));

mysql_select_db($database_testverbindung, $testverbindung);
$Result1 = mysql_query($insertSQL, $testverbindung) or die(mysql_error());

$insertGoTo = "../the_blogs/stefan.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_testverbindung, $testverbindung);
$query_stefan_guestbook = "SELECT * FROM guestbook ORDER BY ID DESC";
$stefan_guestbook = mysql_query($query_stefan_guestbook, $testverbindung) or die(mysql_error());
$row_stefan_guestbook = mysql_fetch_assoc($stefan_guestbook);
$totalRows_stefan_guestbook = mysql_num_rows($stefan_guestbook);

mysql_select_db($database_testverbindung, $testverbindung);
$query_links = "SELECT * FROM links ORDER BY links ASC";
$links = mysql_query($query_links, $testverbindung) or die(mysql_error());
$row_links = mysql_fetch_assoc($links);
$totalRows_links = mysql_num_rows($links);
?>

p.s.: wenn ich die Fehleranzeige herausnehme ist wieder alles beim Alten: Nach Abschicken des Formulars wird "falscher Sicherheitscode" angezeigt. Ich weiss ich habe das schon mal gefragt, aber kann das was mit der GD-Library zu tun haben?
patEwing
 
Beiträge: 9
Registriert: 04.02.2008, 02:42

VorherigeNächste

Zurück zu Sonstiges

Wer ist online?

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

cron