Webdesign in Siegen

Sicheritscode Abfrage Tutorial

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Sicheritscode Abfrage Tutorial

Beitragvon veNom am 17.07.2007, 15:23

Hi,

ich versuche gerade dieses Sicherheitscode Abfrage Script in mein Registrierformular einzubringen, es funktioniert, aber nicht o0?

Ich bekomme das Bild nicht angezeigt. Ja, ich verwende IE, da ich weiß das IE PNG nicht unterstützt hab ich auch FF offen ;) (ungern aber doch :xx: )

was einfach so in der Gegen herum steht ist dieser Code-Teil
[code]<include>

diesen habe ich da hin, wo mein Script normaler weiße die Daten in die Datenbank schreibt ...

dieses vor meinen Formular
[code]include("config.php");
function random_string($chars = 6)
{
$s = uniqid(mt_rand(), true);
$s = sha1($s);
$s = substr($s, mt_rand(0, 40-$chars), $chars);
return $s;
}
$verify = random_string(6);
$zahl = rand(1,9).rand(1,9).rand(1,9);
mysql_query("INSERT INTO `img` VALUES ('$zahl','$verify')");[/code]

Diesen hier in meinen Formular
[code]<img>
<input>
<input>
[/code]

und ndatürlich die rand.php erstellt ...

Was ist da flasch?
All you get is all you need
Benutzeravatar
veNom
Mitglied
 
Beiträge: 1660
Registriert: 29.12.2005, 23:31
Wohnort: Wien

Beitragvon Manuel am 17.07.2007, 19:43

Hey Markus,

hast du da etwa zufällig vergessen HTML in diesem Beitrag zu deaktivieren? :P

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Beitragvon veNom am 18.07.2007, 09:02

grml -..- ich stells nochmal neu rein

edit:

der Code
[code<?php

// }
?>
<html>
<head>
<script type="text/javascript">
<!--
function Formular () {
if (document.usercreate.username.value == "") {
alert("Bitte geben Sie einen Benutzernamen an!");
document.usercreate.username.focus();
return false;
}
if (document.usercreate.password.value == "") {
alert("Bitte geben Sie ein Passwort ein!");
document.usercreate.password.focus();
return false;
}
if (document.usercreate.mail.value == "") {
alert("Bitte geben Sie eine E-mail Adresse an!");
document.usercreate.mail.focus();
return false;
}
if (document.usercreate.mail.value.indexOf("@") == -1) {
alert("Dies ist keine gültige E-mail Adresse!");
document.usercreate.mail.focus();
return false;
}
if (document.usercreate.vname.value == "") {
alert("Bitte geben Sie Ihren Vornamen an!");
document.usercreate.vname.focus();
return false;
}
if (document.usercreate.nname.value == "") {
alert("Bitte geben Sie Ihren Nachnamen an!");
document.usercreate.nname.focus();
return false;
}
if (document.usercreate.department.value == "") {
alert("Bitte geben Sie Ihre Abteilung an!");
document.usercreate.department.focus();
return false;
}
if (document.usercreate.functio.value == "") {
alert("Bitte geben Sie Ihre Position an!");
document.usercreate.functio.focus();
return false;
}
if (document.usercreate.gebdat.value == "") {
alert("Bitte geben Sie Ihr Geburtsdatum an!");
document.usercreate.gebdat.focus();
return false;
}
}
//-->
</script>
</head>
<body>
<?php

function random_string($chars = 6)
{
$s = uniqid(mt_rand(), true);
$s = sha1($s);
$s = substr($s, mt_rand(0, 40-$chars), $chars);
return $s;
}
$verify = random_string(6);
$zahl = rand(1,9).rand(1,9).rand(1,9);
mysql_query("INSERT INTO secureimg VALUES ('$zahl','$verify')");

if(!empty($_POST["username"]))
{
$check1 = "SELECT count(*) AS anzahl FROM users WHERE username= '".$_POST['username']."'";
$checkq1 = mysql_query($check1);
$row = mysql_fetch_object($checkq1);
if($row->anzahl > 0)
echo $usrexists;

else
{
$check2 = "SELECT count(*) AS anzahl FROM users WHERE mail= '".$_POST['mail']."'";
$checkq2 = mysql_query($check2);
$row = mysql_fetch_object($checkq2);
if($row->anzahl > 0)
echo $mailexists;
else {
$code = $_POST['code'];
$verify = $_POST['verify'];

$s = mysql_query("SELECT * FROM secureimg WHERE verify='$verify'");
$fetch = mysql_fetch_assoc($s);

if ($fetch['code'] != $code)
{
print("Sie haben den Sicherheitscode falsch abgetippt!");
mysql_query("DELETE * FROM secureimg WHERE verify='$verify'");
die("");
}
else
{
mysql_query("DELETE * FROM secureimg WHERE verify='$verify'");
}

$createsql = "INSERT INTO users VALUES('', '$_POST[username]', '$_POST[password]', '$_POST[mail]', '$_POST[vname]', '$_POST[nname]', '$_POST[department]', '$_POST[functio]', '', '$_POST[gebdat]', 'no')";
if(mysql_query($createsql))
{
echo $usercreated;
}
else {
echo $usernotcreated;
}
}

}
}

echo "<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">";
echo "<form name=\"usercreate\" method=\"post\" action=\"index.php?go=register\" onSubmit=\"return Formular()\">";
echo " <tr>";
echo " <td width=\"100\"><b>$usrname</b></td>";
echo " <td width=\"300\">";
echo " <input type=\"text\" name=\"username\">";
echo " </tr>";
echo " <tr>";
echo " <td width=\"100\"><b>$pass</b></td>";
echo " <td width=\"300\">";
echo " <input type=\"text\" name=\"password\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$mail</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"mail\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$vname</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"vname\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$nname</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"nname\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$department</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"department\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$function</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"functio\">";
echo " </tr>";
echo " <tr>";
echo " <td><b>$gebdate</b></td>";
echo " <td>";
echo " <input type=\"text\" name=\"gebdat\" value=\"DD-MM-YYYY\">";
echo " </tr>";
echo " <tr>";
echo " <td>";
echo "<img src='rand.php?a=".$verify."' border='0' alt='Verify Code'>";
echo "</td><td>";
echo "<input type='text' name='code'>";
echo "<input type='hidden' name='verify' value='".$verify."'>";
echo "</td>";
echo " </tr>";
echo " <tr>";
echo " <td></td>";
echo " <td>";
echo " <input type=\"submit\" value=\"$create\">";
echo " </tr>";
echo "</form>";
echo "</table>";
?>
</body>
</html>[/code]

edit2:
Folgendes... das Image erzeugen geht nun, anderes Problem ist wenn man falsch eintippt, kommt "code falsch blablabla..." da ist ein "die()" drinnen, is auch richtig so weil wenn er weiter machen würde, würde er ja trotzdem den user anlegen.

Mein Problem ist aber das ich das rechte Menü und mein Content-Footer nicht sehe, weil er ja abbricht, kann man da was machen das er einfach nur die paar zeilen überspringt wo er den user anlegen würde?
Zuletzt geändert von veNom am 06.02.2008, 10:13, insgesamt 1-mal geändert.
All you get is all you need
Benutzeravatar
veNom
Mitglied
 
Beiträge: 1660
Registriert: 29.12.2005, 23:31
Wohnort: Wien

Beitragvon veNom am 18.07.2007, 09:45

*erst denken dann schreiben, erst denken dann schreiben, erst denken dann schreiben, ...*

Bin selbst drauf gekommen *gg*

musste nur meine if-else-else-if-else.. blub umstellen
All you get is all you need
Benutzeravatar
veNom
Mitglied
 
Beiträge: 1660
Registriert: 29.12.2005, 23:31
Wohnort: Wien

Beitragvon patrik am 18.07.2007, 10:07

-
Zuletzt geändert von patrik am 07.04.2008, 17:03, insgesamt 1-mal geändert.
patrik
Mitglied
 
Beiträge: 67
Registriert: 25.03.2007, 22:28

Beitragvon veNom am 18.07.2007, 10:10

Weis auch nicht, ist halt so *gg*, habs mir auch schon öfter gedacht, aber nie wirklich gemacht dann.

Ich werds mir für die Zukunft merken :)
All you get is all you need
Benutzeravatar
veNom
Mitglied
 
Beiträge: 1660
Registriert: 29.12.2005, 23:31
Wohnort: Wien

Beitragvon Manuel am 18.07.2007, 11:52

Man sollte auch dazu anmerken, dass ein echo wesentlich schneller in der Ausgabe ist als viele echo-Ausgaben. Daher würde ich da auf jeden Fall sehr drauf achten, denn das sollte man keinesfalls unterschätzen.

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Beitragvon michfrm am 19.07.2007, 16:05

Das tolle an PHP ist ja, dass man einfach mit dem interpretieren des Codes aufhören kann, das HTML sich plain ausgeben lassen kann und dann wieder in PHP-Modus wechseln kann. Ist sicher noch flotter als echo und du sparst dir das ganze escapen :wink:
Safari und Opera lassen sich nicht vergleichen. Safari ist ne Badeente und Opera ein Kampfschiff.


98% of the teenage population does or has tried smoking pot. If you're one of the 2% who hasn't, copy & paste this in your signature.
Benutzeravatar
michfrm
Mitglied
 
Beiträge: 10
Registriert: 23.06.2007, 21:48
Wohnort: Sonthofen

Beitragvon Manuel am 19.07.2007, 16:59

Das ganze "Escapen" sparst du dir ebenfalls, wenn du einfach anstatt den doppelten Anführungszeichen einfach Anführungszeichen verwendest. Das hat den zusätzlichen Vorteil, dass der Text nicht auf Variablen geparsed wird, was zusätzlich Geschwindigkeit bringt.

Zwischen php und html zu wechseln finde ich persönlich sehr unschön, daher bin ich mittlerweile auch ein echt großer Fan von Templates geworden, was einfach oft die viel schönere Lösung ist.

Lg,
Manuel
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast