Winziges PHP Script

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Winziges PHP Script

    [COLOR="Cyan"]Huhu @all PHPler

    Ich hätte ne kleine bitte.
    Kann mir jemand ein winziges PHP sccript schreiben, das folgendes macht und so aussieht ^^,


    Aussehen:

    3 Textboxen
    3 Labels (Account, Pw, E-Mail)
    1 Button (Sende)

    Das Script sollte die Daten in den Textboxen an eine Mysql db schiken

    IP : localhost
    Datenbankname : Plain
    Benutzer: root
    Tabelle : Acc, pw , e-mail


    Ich hoffe jemand tut mir den kleinen gefallen.

    Und h4te komm ja nicht auf die Idee deine Standartfrage zu benutzen <.<

    Lg
    OffiGM[/COLOR]
  • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

  • OffiGM;65600 schrieb:

    [COLOR="Cyan"]Tabelle : Acc, pw , e-mail[/COLOR]

    Und wie heißt die Tabelle??

    /EDIT: Hier.
    Nächstes mal keine Sonderzeichen oder Großbuchstaben verwenden. xD

    PHP-Quellcode

    1. <?php
    2. $host = "localhost";
    3. $user = "root";
    4. $pass = "1234";
    5. $db = "Plain";
    6. mysql_connect($host, $user, $pass);
    7. mysql_select_db($db);
    8. if(isset($_POST['register'])) {
    9. $accounts = mysql_query("SELECT * FROM `Regi` WHERE `Account`=\"".mysql_real_escape_string($_POST['account'])."\"");
    10. if(mysql_num_rows($accounts) > 0) {
    11. echo "Der Username ist bereits vergeben!";
    12. } else {
    13. mysql_query("INSERT INTO `Regi`(Account, PW, E-Mail) VALUES(\"".mysql_real_escape_string($_POST['account'])."\", \"".mysql_real_escape_string($_POST['password'])."\", \"".mysql_real_escape_string($_POST['email'])."\")");
    14. echo "Der Account wurde erfolgreich angelegt!";
    15. }
    16. }
    17. ?>
    18. <form action="" method="post">
    19. Account: <input type="text" name="account" />
    20. <br/>
    21. Passwort: <input type="text" name="password" />
    22. <br/>
    23. E-Mail: <input type="text" name="email" />
    24. <br/>
    25. <input type="submit" name="register" value="Registrieren" />
    26. </form>
    Alles anzeigen


    Habs nicht getestet, sollte aber klappen.
  • @Surako

    PHP-Quellcode

    1. mysql_query("INSERT INTO `Regi`(Account, PW, E-Mail) VALUES(\"".mysql_real_escape_string($_POST['account'])."\", \"".mysql_real_escape_string($_POST['password'])."\", \"".mysql_real_escape_string($_POST['email'])."\")");


    Wieso zur hölle benutzt du nicht einfach ein ' anstatt einem " ? Das Escapen ist ja mal voll der umweg :s

    PHP-Quellcode

    1. mysql_query("SELECT * FROM `Regi` WHERE `Account`=\"".mysql_real_escape_string($_POST['account'])."\"");


    Wieso Selectierst du alles aus der Tabelle Regi heraus ?! Das ist doch nur unnötiger Arbeitsspeicher der bei diesem vorgang flöten geht. >.<


    So hier der Code nochmal schöner, effizienter und vollständiger ;D

    PHP-Quellcode

    1. <?php
    2. $host = "localhost";
    3. $user = "root";
    4. $pass = "1234";
    5. $db = "Plain";
    6. mysql_connect($host, $user, $pass);
    7. mysql_select_db($db);
    8. if(isset($_POST['register'])) {
    9. $accounts = mysql_query("SELECT Account FROM `Regi` WHERE `Account` = '".mysql_real_escape_string($_POST['account'])."' ");
    10. if(mysql_num_rows($accounts) > 0) {
    11. echo "Der Username ist bereits vergeben!";
    12. } else {
    13. mysql_query("INSERT INTO `Regi`(Account, PW, E-Mail) VALUES('".mysql_real_escape_string($_POST['account'])."', '".mysql_real_escape_string($_POST['password'])."', '".mysql_real_escape_string($_POST['email'])."')");
    14. echo "Der Account wurde erfolgreich angelegt!";
    15. }
    16. } else {
    17. echo "
    18. <html>
    19. <form method=\"POST\" action=\"\">
    20. Account: <input type=\"text\" name=\"account\"><br />
    21. E-Mail: <input type=\"text\" name=\"email\"><br />
    22. Password: <input type=\"password\" name=\"password\"><br />
    23. <input type=\"submit\" name=\"register\" value=\"Registrieren\">
    24. </form>
    25. </html>
    26. ";
    27. }
    28. ?>
    Alles anzeigen
  • OffiGM;65628 schrieb:

    [COLOR="Cyan"]Also danke Surako ^^

    Jetzt nächste Frage ich habe mir Mysql seit ewigkeiten nicht gearbeitet.

    Wie müsste ich die Spalten umsetzen=

    varchar
    int
    oder whar ever=[/COLOR]


    Suraki? :S nimm lieber mein Code.

    Zu deinem Problem.

    Varchar = ein String abc..xyz0123789 usw. passt alles rein. Sehr gut geeignet für Emails namen passwörter usw.

    Integer = Zahlen

    Also E-mail/Accountname/Password = Varchar für email 64zeichen für accountname/password 32zeichen maximal find ich angemessen.
  • OffiGM;65630 schrieb:

    [COLOR="Cyan"]Ok anderst muss ich fragen xD

    Danke dir auch Yannick.

    Kann mir jemand schnell ne SQL machen XD
    mein Navicate meckert bei jeder Aktion beim DB erstellen :(

    Lg
    OffigM[/COLOR]

    [COLOR="Red"]*P.s. Jeder der mich nicht mag darf sich jetzt über meine unfähigkeit in SQL totlachen[/COLOR]


    @OffigM :

    Nicht Jeder kann Alles und warum Sollte man dich Deshalb Auslachen ?!?

    Es gibt Genug leute, die Garnix können oder Ganz Wenig.

    Jeder Mensch, lernt im Leben, vorallem im Jungen Alter :)


    LG Ghostfire
  • [COLOR="Cyan"]

    Ghostfire;65640 schrieb:

    @OffigM :

    Nicht Jeder kann Alles und warum Sollte man dich Deshalb Auslachen ?!?

    Es gibt Genug leute, die Garnix können oder Ganz Wenig.

    Jeder Mensch, lernt im Leben, vorallem im Jungen Alter :)


    LG Ghostfire


    Deswegen die Betonung auf "Jeder der mich nicht mag"
    Die suchen nur solche gelegenheiten :P

    Aber klar nicht jeder kann alles XD[/COLOR]
  • Man könnte auch anstatt mysql_num_rows einfach direkt SELECT count(Account) FROM `Regi` WHERE...

    EDIT:

    Hier deine Table:

    CREATE TABLE `Plain`.`accounts` (
    `id` INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `accountname` VARCHAR( 64 ) NOT NULL ,
    `password` VARCHAR( 64 ) NOT NULL ,
    `email` VARCHAR( 128 ) NOT NULL
    ) ENGINE = MYISAM ;


    Und das PW ja gecriptet werden soll müsste diese Zeile eigentlich so heißen:

    PHP-Quellcode

    1. mysql_query("INSERT INTO `Regi`(Account, PW, E-Mail) VALUES('".mysql_real_escape_string($_POST['account'])."', '".md5($_POST['password'])."', '".mysql_real_escape_string($_POST['email'])."')");
  • PHP-Quellcode

    1. <?php
    2. // Konfiguration
    3. define('MYSQL_HOST', 'localhost');
    4. define('MYSQL_USER', 'root');
    5. define('MYSQL_PASS', '1234');
    6. define('MYSQL_DB', 'Plain');
    7. define('MIN_ACCOUNT_NAME_LEN', 4);
    8. define('MAX_ACCOUNT_NAME_LEN', 16);
    9. define('MIN_PASSWORD_LEN', 4);
    10. define('MAX_PASSWORD_LEN', 16);
    11. // Verbindung
    12. $connect_result = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    13. if(!$connect_result) {
    14. die('MySQL meldet: '.mysql_errno($connect_result).': '.mysql_error($connect_result));
    15. }
    16. $select_result = mysql_select_db(MYSQL_DB, $connect_result);
    17. if(!$select_result) {
    18. die('Datenbank konnte nicht ausgew&auml;hlt werden.');
    19. }
    20. // Formular abgesendet
    21. if(isset($_POST['submit'])) {
    22. $resultmsgs = array();
    23. $error = false;
    24. // Daten holen und auswerten
    25. $account_name = mysql_real_escape_string($_POST['account_name']);
    26. $account_email = mysql_real_escape_string($_POST['account_email']);
    27. $account_password = mysql_real_escape_string($_POST['account_password']);
    28. if(strlen($account_name) < MIN_ACCOUNT_NAME_LEN || strlen($account_name) > MAX_ACCOUNT_NAME_LEN) {
    29. $resultmsgs[] = '<div style="color:red">Der eingebene Accountname ist zu kurz oder zu lang.</div>';
    30. $error = true;
    31. }
    32. if(strlen($account_password) < MIN_PASSWORD_LEN || strlen($account_password) > MAX_PASSWORD_LEN) {
    33. $resultmsgs[] = '<div style="color:red">Das eingebene Passwort ist zu kurz oder zu lang.</div>';
    34. $error = true;
    35. }
    36. if(!preg_match("/^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]{2,3}$/", $account_email)) {
    37. $resultmsgs[] = '<div style="color:red">Es wurde keine g&uuml;ltige EMail-Adresse eingegeben.</div>';
    38. $error = true;
    39. }
    40. // Prüfen: Existiert Benutzername oder EMail-Adresse bereits?
    41. if(!$error) {
    42. $sql = 'SELECT COUNT(`id`) AS `exists` FROM `accounts` WHERE `accountname` = \''.$account_name.'\' OR `email` = \''.$account_email.'\'';
    43. $result = mysql_query($sql, $connect_result);
    44. if(!$result) {
    45. die('MySQL meldet: '.mysql_errno($connect_result).': '.mysql_error($connect_result));
    46. }
    47. $row = mysql_fetch_assoc($result);
    48. if($row['exists']) {
    49. $resultmsgs[] = '<div style="color:red">Der Accountname oder die EMail-Adresse existieren bereits.</div>';
    50. $error = true;
    51. } else {
    52. // Account erstellen
    53. $sql = 'INSERT INTO `accounts` (`accountname`, `email`, `password`) VALUES (\''.$account_name.'\', \''.$account_email.'\', \''.$account_password.'\')';
    54. $result = mysql_query($sql, $connect_result);
    55. if(!$result) {
    56. die('MySQL meldet: '.mysql_errno($connect_result).': '.mysql_error($connect_result));
    57. } else {
    58. $resultmsgs[] = '<div style="color:green">Der Account wurde erfolgreich erstellt.</div>';
    59. }
    60. }
    61. }
    62. }
    63. ?>
    64. <html>
    65. <head>
    66. <title>Registrierungsskript</title>
    67. </head>
    68. <body>
    69. <h1>Accountdaten</h1>
    70. <?php
    71. // Fehlermeldungen
    72. foreach($resultmsgs AS $resultmsg) {
    73. echo $resultmsg;
    74. }
    75. ?>
    76. <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
    77. <p><b>ID: </b><input type="text" name="account_name" value="<?=$account_name?>"></p>
    78. <p><b>EMail-Adresse: </b><input type="email" name="account_email" value="<?=$account_email?>"></p>
    79. <p><b>Passwort: </b><input type="password" name="account_password" value=""></p>
    80. <p><input type="submit" name="submit" value="Registrieren"></p>
    81. </form>
    82. </body>
    83. </html>
    Alles anzeigen

    Mein Versuch...
  • Edite:
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\index.php on line 12

    Kommt bei jedem :(

    Die Meldung sagt aus, wie du ja sicher bereits gelesen hast, dass der Funktion mysql_num_rows() statt einer Resource eine Variable vom Typ boolean als Parameter übergeben wurde. Der Parameter ist die Rückgabe der Funktion mysql_query(). Diese gibt wenn das Query erfolgreich ausgeführt wurde eine Resource zurück, ansonsten ein false. Um den Fehler also abzufangen, reicht es, die Rückgabe abzufangen:

    Füge bei den Beispielen von yannick / Surako also vor Zeile 12 folgendes ein:

    PHP-Quellcode

    1. if(!$accounts) {
    2. die('Fehler im MySQL Query!');
    3. }


    Um nun noch eine genaue Fehlerbeschreibung von MySQL zu erhalten, ersetze das die(); mit folgendem:

    PHP-Quellcode

    1. die('MySQL meldet: '.mysql_errno().': '.mysql_error());


    Das gesammte Skript sieht nun also so aus:

    PHP-Quellcode

    1. <?php
    2. $host = "localhost";
    3. $user = "root";
    4. $pass = "1234";
    5. $db = "Plain";
    6. mysql_connect($host, $user, $pass);
    7. mysql_select_db($db);
    8. if(isset($_POST['register'])) {
    9. $accounts = mysql_query("SELECT * FROM `Regi` WHERE `Account`=\"".mysql_real_escape_string($_POST['account'])."\"");
    10. // Fehler?
    11. if(!$accounts) {
    12. die('MySQL meldet: '.mysql_errno().': '.mysql_error());
    13. }
    14. if(mysql_num_rows($accounts) > 0) {
    15. echo "Der Username ist bereits vergeben!";
    16. } else {
    17. $result = mysql_query("INSERT INTO `Regi`(Account, PW, E-Mail) VALUES(\"".mysql_real_escape_string($_POST['account'])."\", \"".mysql_real_escape_string($_POST['password'])."\", \"".mysql_real_escape_string($_POST['email'])."\")");
    18. if(!$result) {
    19. die('MySQL Fehler: '.mysql_errno().': '.mysql_error());
    20. }
    21. echo "Der Account wurde erfolgreich angelegt!";
    22. }
    23. }
    24. ?>
    Alles anzeigen


    Nun poste die Fehlermeldung. :)
  • Sofern zu h4tes Tabelle nutzt:
    $result = mysql_query("INSERT INTO `accounts` (`accountname`, `password`, `email`) VALUES (\"".mysql_real_escape_string($_POST['account'])."\", \"".mysql_real_escape_string($_POST['password'])."\", \"".mysql_real_escape_string($_POST['email'])."\")");