Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » Userdaten von Formular in die Datenbank

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
01.03.2005, 21:26 Uhr
icestorm



Hallo!

Ich will, dass sich Leute auf meiner Seite über ein Formular registrieren können.

Ich habe eine Datenbanktabelle mit: UserID, UserName, UserPass, UserSession, UserMail!

Ich will, dass in UserName der Name des Benutzers kommt, UserPass das Passwort des Benutzers hineinkommt und in UserMail soll die E-Mail kommen!

Das Passwort wird durch MD5 verschlüsselt!

Die UserMail ist mir nicht so wichtig, also habe ich nur ein Formular mit Name und Passwort!

Das sieht so aus:

Code:

<form method="post" action="register.php">
<b>Benutzername:</b>
<input name="username" type="text" class="input">
<b>Passwort:</b>
<input name="userpass" type="password" class="input">
<br><center>
<input name="register" type="submit" id="register" value="Registrieren" class="input">
</center></form>



Natürlich habe ich das in einen echo Befehl gesetzt. Außerdem hab ich das ganze fürs Auge schön gemacht, mit Tabellen, sonst erträgt man das ja nicht!^^

So, den Befehl für die MySQL Datenbank weiß ich auch, der lautet:


Code:

INSERT INTO users SET UserName='Benutzername', UserPass=MD5('testpw')



Verbinden mit der Datenbank funktioniert auch, das hab ich in einer anderen Datei, die lautet:

Code:

$con= mysql_connect('localhost','root','') or die(mysql_error());
     mysql_select_db('users',$con) or die(mysql_error());



Da das ganze lokal getestet wird, hab ich kein passwort^^

Ich habe echt schon ein paar Sachen funktioniert, hab in einem Gästebuch nachgeschaut, wie das die Sachen in die MySQL Datenbank einträgt, funktioniert ja eigentlich in etwa wie ein Gästebuch! Hat aber leider auch nicht geklappt!

Hoffe, dass ihr mir helfen könnt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.03.2005, 23:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


heißt die DB users? also so:


Code:
server
|- users
   |- users
      |- UserID | ... | ... | ...
|- mysql
   |- user
      |- ... | ... | ...
   |- ...



Du musst du bei mysql_select_db auch den DB-Namen eingeben, nicht den von der Tabelle!

Es ist immer so:


Code:
|- Datenbank 1
    |- Tabelle 1
      |- Spalte1 | Spalte2 | ...
    |- Tabelle 2
      |- Spalte1 | Spalte2 | ...
|- Datenbank 2
    |- Tabelle 1
      |- Spalte1 | Spalte2 | ...
    |- Tabelle 2
      |- Spalte1 | Spalte2 | ...


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.03.2005, 13:17 Uhr
icestorm



Ja, die DB heißt auch users!

Das wäre dann so:


Code:

|- users
    |- users
      |- UserID | UserName | usw...



Nur kann ich jetzt bei dem Formular, das von mir oben gepostet wurde, irgendwie eine Variable für UserName und für UserPass erstellen, dass ich dann einfach den MySQL befehl zb so ausführe:


Code:

INSERT INTO users SET UserName='$username', UserPass=MD5('$userpass')



Müsste ja irgendwie gehen, denke ich^^

Muss ich in meine sessionhelpers.inc.php vielleicht noch folgenden Code hineinschreiben:


Code:

function register($name, $pass)
{
    $sql="INSERT INTO users SET UserName='".$username."', UserPass=MD5('".$userpass."')
}



Und dann noch in meine register.php folgendes hinzufügen (weil es ja wieder in die register.php eingefügt wird, sieht man ja am Formular):


Code:

if (isset($_POST['register']))
{
    $reg=register($_POST['username'], $_POST['userpass']);
}



Würde das so vielleicht gehn? Weil ich nicht so viel Ahnung von PHP hab hab ich mir das "zusammengeschnitten", ich werds gleich mal probieren und dann meine Erkenntnis hinzueditieren, wenns falsch ist, kann mir ja vielleicht jemand sagen, was falsch ist und wie das richtig gehört, würde mich darüber freuen

Also es funktioniert leider nicht

Hier der Fehler:

Code:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampplite\htdocs\hp design\register.php on line 10



Hab das "function register()" jetzt in die register.php gegeben, weil ansonsten auf der Startseite (wo das ja auch die sessionhelpers.inc.php included ist) ein Fehler gekommen ist!

Ich poste am besten mal die register.php, dann kann man mir wohl besser helfen!


Code:

<?
session_start();
include 'sessionhelpers.inc.php';

function register($name, $pass)
{
    $sql="INSERT INTO users SET UserName='".$username."', UserPass=MD5('".$userpass."');
}

if (isset($_POST['register']))
{
    $reg=register($_POST['username'], $_POST['userpass']);
}

include('header.htm');
echo '<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr><td width="100%" background="images/cellpic.gif" bgcolor="#ffffff" style="font-size: 10pt;">
<b>Registrierung<b>
</td></tr>
</td></tr><tr><td><tr>
<td bgcolor="#ffffff" style="font-size: 10pt;">Hier k&ouml;nnen Sie sich registrieren!<br><br>
<table border="0" width="80%">
<tr><td width="50%" align="right" style="font-size: 10pt;">
<form method="post" action="register.php?aktion=insert">
<b>Benutzername:</b></td>
<td width="50%"><input name="username" type="text" class="input">
</td></tr>
<tr><td align="right" style="font-size: 10pt;">
<b>Passwort:</b></td>
<td><input name="userpass" type="password" class="input"></td></tr></table>
<br><center>
<input name="register" id="register" type="submit" id="register" value="Registrieren" class="input">
</center></form>
</td></tr></table>';
include('footer.htm');
?>



Es sind soviele Tabellen, weil die von header.htm und footer.htm fortgesetzt werden.

Dieser Post wurde am 02.03.2005 um 13:32 Uhr von icestorm editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.03.2005, 13:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Code:
function register($name, $pass)
{
    $sql="INSERT INTO users SET UserName='".$username."', UserPass=MD5('".$userpass."');
}


Damit führst du ja auch noch keinen query aus. du musst schon mysql_query($sql,$conn); machen ($conn ist das was dir mysql_connect zurückliefert)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.03.2005, 15:19 Uhr
icestorm




Zitat von FloSoft:

Code:
function register($name, $pass)
{
    $sql="INSERT INTO users SET UserName='".$username."', UserPass=MD5('".$userpass."');
}


Damit führst du ja auch noch keinen query aus. du musst schon mysql_query($sql,$conn); machen ($conn ist das was dir mysql_connect zurückliefert)


So, das hab ich jetzt gemacht, jetzt ist das Problem aber, dass der Fehler, den ich oben gepostet hab noch immer da ist und ich hab keine ahnung wie ich den wegbring, funktioniert einfach nicht ;( vielleicht kannst du mir da auch helfen, wäre echt super
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.03.2005, 19:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


evtl hast du irgendein komisches zeichen drin in zeile 10 (das der interpreter nicht mag)

und mach da klammern rum:


Code:
include('sessionhelpers.inc.php');



ist lesbarer

Ansonsten würde ich da wo lange html teile kommen immer den php-block beenden ?> und dann das html direkt ausgeben ohne echo usw. und dann sobald gebraucht wieder mit <?php oder <?= neue phpteile anfangen lassen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.03.2005, 21:32 Uhr
icestorm




Zitat von FloSoft:
evtl hast du irgendein komisches zeichen drin in zeile 10 (das der interpreter nicht mag)

und mach da klammern rum:


Code:
include('sessionhelpers.inc.php');



ist lesbarer

Ansonsten würde ich da wo lange html teile kommen immer den php-block beenden ?> und dann das html direkt ausgeben ohne echo usw. und dann sobald gebraucht wieder mit <?php oder <?= neue phpteile anfangen lassen.


Danke für den Tip, das mit dem Useranmeldesystem hab ich halt aus einem Tutorial und da war das mit dem include so, ansonsten mach ich es eh immer mit Klammern!

Naja, aber da du oben siehst ist bei der Zeile 10 (jetzt 11, da ich eine Zeile hinzugefügt hab) das:

Code:

if (isset($_POST['register']))



Aber was ist daran falsch??

Ich hab das ganze jetzt ein wenig anders gemacht, in einem php buch steht wie man das machen kann, dass das ganze in die Datenbank kommt, nur funktionierts noch immer nicht, also es funktioniert das Formular und es kommt kein Fehler, nur wirds nicht in die Datenbank eingetragen!

Ich poste mal die ganzen .php dateien, die damit zusammenhängen, damit man mir sagen kann was falsch ist^^ (wenn ihr so nett seid^^)

register.php:

Code:

<?
include('header.htm');
?>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr><td width="100%" background="images/cellpic.gif" bgcolor="#ffffff" style="font-size: 10pt;">
<b>Registrierung<b>
</td></tr>
</td></tr><tr><td><tr>
<td bgcolor="#ffffff" style="font-size: 10pt;">Hier k&ouml;nnen Sie sich registrieren!<br><br>
<table border="0" width="80%">
<tr><td width="50%" align="right" style="font-size: 10pt;">
<form method="post" action="registerdb.php">
<b>Benutzername:</b></td>
<td width="50%"><input name="username" id="username" type="text" class="input">
</td></tr>
<tr><td align="right" style="font-size: 10pt;">
<b>Passwort:</b></td>
<td><input name="userpass" id="userpass" type="password" class="input"></td></tr></table>
<br><center>
<input name="submit" id="register" type="submit" value="Registrieren" class="input">
</center></form>
</td></tr></table>
<?
include('footer.htm');
?>



registerdb.php:

Code:

<?
include('includereg.php');
Conn();
mysql_select_db($DB,$Conn);
import_request_variables('p','frm_');
$SQL="INSERT INTO users SET UserName='$frm_username', UserPass=MD5('$frm_userpass')";
DisConn();
?>



includereg.php

Code:

<?
$DB="users";
$Server="localhost";
$Conn=NULL;
function Conn()
{
  global $Conn;
  global $Server;
  $Conn=mysql_connect($Server);
};

function DisConn()
{
  global $Conn;
  mysql_close($Conn);
};
?>



Fehler kommt keiner, wenn das eingetragen werden soll, aber es wird einfach nicht eingetragen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.03.2005, 07:29 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

Ich würde auf jeden Fall noch mysql_escape_string nutzen um SQL Injections zu vermeiden

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.03.2005, 10:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du definierst den query zwar (also $sql = "...") führst ihn aber nicht mit mysql_query aus
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.03.2005, 15:53 Uhr
icestorm



Ok, hab den wieder ausgeführt, jetzt sieht die Datei so aus:
registerdb.php:

Code:

<?
include('includereg.php');
Conn();
mysql_select_db($DB,$Conn);
import_request_variables('p','frm_');
$SQL="INSERT INTO users SET UserName='$frm_username', UserPass=MD5('$frm_userpass')";
mysql_query($SQL,$Conn);
DisConn();
header("Location:index.php");
?>



Nur wird noch immer nichts eingetragen!

@mike: sorry, kenn mich wirklich nicht gut aus, was ist mysql_escape_string und was sind SQL Injections?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: