Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „PHP fehler“

xero7

» Unterdrück(t)er

Hallo,

ich wollte mir mal ein eigenes Login/Anmeldungssystem erstellen mit hilfe von PHP Und Mysql. Ich habe es mir so gedacht:

Man meldet sich an, die Daten werden dann mit post weitergegeben.
Die datenwerden dann in einer db gespeichert und beim einloggen abgefragt.

Hier mein Code:

index.php
PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Anmelde Formular</title>

<style type="text/css">
* {
margin: 0px;
padding: 0px;
}

body {
font-family:Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #4b4b4b;
}

.anmeldung {
border: 1px dashed #c0c0c0;
font-size: 12px;
height: 16px;
width: 150px;
padding: 4px 0px 0px 0px;
color: #4b4b4b;
}

.button {
border: 1px dashed #c0c0c0;
font-size: 12px;
width: 75px;
color: #4b4b4b;
}

</style>

</head>

<body>
<h3>Anmeldungsformular</h3>
<p>&nbsp;</p>
<form action="page.php" method="post" enctype="multipart/form-data" name="anmelden">
  <label>
  <input name="benutzername" type="text" class="anmeldung" />
  </label>
  Benutzername
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="passwort" type="password" class="anmeldung" />
    </label> 
  Passwort</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="email" type="text" class="anmeldung" />
    </label>
  E-mailadresse</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="vereinsposition" type="text" class="anmeldung" value="Vereinsmitglied*" />
    </label>
    Vereinsposition</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input type="submit" name="button" class="button" value="Anmelden" />
    </label>
    <label>
    <input type="reset" name="button2" class="button" value="Zurücksetzen" />
    </label>
  </p>
  <p>&nbsp;</p>
  <p>*Vereinsposition: Vereinsmitglied ist Standart.</p>
</form>


</body>
</html>

page.php
PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>


<?php 
include "inc/config.php";

//Variablenvergabe für die Postdaten
$benutzername = $_POST["benutzername"];
$passwort = $_POST["passwort"];
$email = $_POST["email"];
$position = $_POST["vereinsposition"];

if (isset($_POST["button"]))
  {
  $sqlab = "insert anmeldung";
  $sqlab .= "( benutzername, passwort, email, position) values ";
  $sqlab .= "('".$benutzername."',";
  $sqlab .= "'".$passwort."',";
  $sqlab .= $email.",";
  $sqlab .=",".$position."')";
  
  mysql_query($sqlab);
  
  $num = mysql_affected_rows();
  if ($num>0)
  {
    echo "Die Anmeldung war erfolgreich";
  }
  else
  {
    echo "Die Anmeldung ist fehlgeschlagen, bitte überprüfen sie ihre Eingaben";
  }	
}
?>


<body>



</body>
</html>

inc/config.php
PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Konfigurationsdatei</title>
</head>

<body>

<?php
    error_reporting(E_ALL);

    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'root');
    define('MYSQL_PASS',     '');
    define('MYSQL_DATABASE', 'login');
?>

</body>
</html>

Diese fehler kommen:

Code:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\page.php on line 27

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\page.php on line 27

Warning: mysql_affected_rows() [function.mysql-affected-rows]: A link to the server could not be established in C:\xampp\htdocs\page.php on line 29
Die Anmeldung ist fehlgeschlagen, bitte überprüfen sie ihre Eingaben


Wisst ihr woran es liegt? Bin neu in dem gebiet.

Ich danke euch

lg
 

MrScorpio

Ex *** | 3ds Max

AW: PHP fehler

ich denke mir, deine inc/config.php Datei ist noch falsch, du muss auf deinem Space zuerst eine DB einrichten und in deiner inc/config.php dann die "HOST", "USER", "PASSWORT" und "DATABASE" definieren.
 

progfrog

programming & 3d

AW: PHP fehler

Nun warum die erste Meldung nun genau so ist weiß ich nicht genau aber die Zweite sagt mir, dass überhaupt keine Verbindung zum Server besteht. Und wenn ich mir dein Skript so anschaue kann ich auch keinen mysql_connect(); Befehl finden. Daher wohl in folge auch der dritte Fehler. Also musst du bevor du deinen Query ausführst nochmal connecten und die Datenbank wählen. Ich mache das immer in dieser Art.
PHP:
<?php
//Verbinden
    mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Keine Verbindung zum Datenbankserver! Problem: ".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die("Konnte Datenbank nicht öffnen: ".mysql_error()); 
?>
Nun was mir noch aufgefallen ist: In deinem Mysql Query heißt es 'INSERT' statt 'INSERT INTO'? Kann natürlich sein, dass das irgendne Kurzform ist die mir nicht bekannt ist aber eigendlich ist 'INSERT INTO' üblich. Desweiteren würde ich empfehlen die MySQL befehle im Query wie 'INSERT INTO' 'VALUES' 'SELECT' 'WHERE' ... der übersichtlichkeit halber großzuschreiben.
Ich würd den Query einfac so schreiben:
PHP:
<?php
  $sqlab = "INSERT INTO anmeldung
                ( benutzername, passwort, email, position)
            VALUES
                '$benutzername', '$passwort', '$email', '$position'
            )";
?>
Das geht auch, ist einfacher und übersichtlicher :D

Gruß progfrog

[edit]
PS: Ich würde evtl. auch noch den HTML Kram aus der Config nehmen. Da du sie includest hättest du dann ja zwei <body>'s und zwei '<head>'s...
 
Zuletzt bearbeitet:

xero7

» Unterdrück(t)er

AW: PHP fehler

Ok vielen dank, jetzt kommt kein fehler mehr, nur habe jetzt das problem, dass er imemr anzeigt, "Die Anmeldung ist fehlgeschlagen, bitte überprüfen sie ihre Eingaben"
 

progfrog

programming & 3d

AW: PHP fehler

PHP:
<?php
$num = mysql_affected_rows();
if ($num>0) {
    echo "Die Anmeldung war erfolgreich";
} else {
    echo "Die Anmeldung ist fehlgeschlagen, bitte überprüfen sie ihre Eingaben";
}
?>
Also wird wenn mindestens ein Datensatz geändert wurde eine positive Meldung ausgegeben sonst die die bei dir immer kommt. Also wurden weniger als 1 Datensatz geändert. Dann evtl. nochmal den Query Checken oder so. Kannst ja evtl. mal bei phpmyadmin gucken ob der Datensatz hinzugefügt wurde oder nicht. Wenn nicht ist noch etwas am Query falsch. Alle Spaltennamen richtig geschrieben?
 

xero7

» Unterdrück(t)er

AW: PHP fehler

Komisch ich habe alles nochmal kontrolliert, finde den fehler aber nicht.
Hier nochmal der jetztige Code:

PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>


<?php 
include "inc/config.php";

//Variablenvergabe für die Postdaten
$benutzername = $_POST["benutzername"];
$passwort = $_POST["passwort"];
$email = $_POST["email"];
$position = $_POST["vereinsposition"];

if (isset($_POST["button"]))
  {
  $sqlab = "INSERT INTO anmeldung
                ( benutzername, passwort, email, position)
            VALUES
                '$benutzername', '$passwort', '$email', '$position'
            )";
  
  mysql_query($sqlab);
  
$num = mysql_affected_rows();
if ($num>0) {
    echo "Die Anmeldung war erfolgreich";
} else {
    echo "Die Anmeldung ist fehlgeschlagen, bitte überprüfen sie ihre Eingaben";
}
}
?>


<body>



</body>
</html>

PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Konfigurationsdatei</title>
</head>

<body>

<?php
//Verbinden
    mysql_connect("localhost", "root","") OR die("Sorry! Keine Verbindung zum Datenbankserver! Problem: ".mysql_error());
    mysql_select_db(login) OR die("Konnte Datenbank nicht öffnen: ".mysql_error()); 
?> 

</body>
</html>

PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Anmelde Formular</title>

<style type="text/css">
* {
margin: 0px;
padding: 0px;
}

body {
font-family:Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #4b4b4b;
}

.anmeldung {
border: 1px dashed #c0c0c0;
font-size: 12px;
height: 16px;
width: 150px;
padding: 4px 0px 0px 0px;
color: #4b4b4b;
}

.button {
border: 1px dashed #c0c0c0;
font-size: 12px;
width: 75px;
color: #4b4b4b;
}

</style>

</head>

<body>
<h3>Anmeldungsformular</h3>
<p>&nbsp;</p>
<form action="page.php" method="post" enctype="multipart/form-data" name="anmelden">
  <label>
  <input name="benutzername" type="text" class="anmeldung" />
  </label>
  Benutzername
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="passwort" type="password" class="anmeldung" />
    </label> 
  Passwort</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="email" type="text" class="anmeldung" />
    </label>
  E-mailadresse</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input name="vereinsposition" type="text" class="anmeldung" value="Vereinsmitglied*" />
    </label>
    Vereinsposition</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input type="submit" name="button" class="button" value="Anmelden" />
    </label>
    <label>
    <input type="reset" name="button2" class="button" value="Zurücksetzen" />
    </label>
  </p>
  <p>&nbsp;</p>
  <p>*Vereinsposition: Vereinsmitglied ist Standart.</p>
</form>


</body>
</html>

1. index.php
2.config.php
3.page.php
 

progfrog

programming & 3d

AW: PHP fehler

Das einzige was mir aufgefallen ist ist, dass du:
PHP:
<?php
mysql_select_db(login);
//statt
mysql_select_db('login');
?>
geschrieben hast. Probier das mal zu ändern.
 

xero7

» Unterdrück(t)er

AW: PHP fehler

Habe es geändert, Fehler ist der gleiche.

Ist doch egal ob man "login" oder 'login' schreibt oder?

Sonst findet ihr keine fehler mehr?

AHH. kann das vllt. hieran liegen?

Von phpmyadmin die angelegten Tabellen.


benutzername varchar(30) utf8_general_ci Nein
passwort varchar(25) utf8_general_ci Nein
email varchar(30) utf8_general_ci Nein
position varchar(30) utf8_general_ci Nein

Habe ich da was falsch eingestellt?
vllt. das ich überall vrchar habe?
 
Zuletzt bearbeitet:
B

boerti

Guest

AW: PHP fehler

Hi, welchen Wert hat $num denn nach der mysql_affected_rows-Abfrage? B.
 

xero7

» Unterdrück(t)er

AW: PHP fehler

$num hat doch den Wert der betroffenen Aktionen.

sind denn die mysql angaben richtig von meinem vorherigen beitrag?
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: PHP fehler

Hi,

wie wäre es, wenn du dein Anemldeformular mal umbaust und im Vorfeld prüfst, ob überhaupt Übergabewerte aus dem Formular vorhanden sind und den Anfordernungen entsprechen?

Zudem - kann man deinem Formular injections übergeben!

hat deine usertabelle eine id (später User-Id) mit auto_increment?
 

xero7

» Unterdrück(t)er

AW: PHP fehler

Danke für deine Antwort, nein, kenne mich so gut noch nciht aus. Kann das daran liegen? Wie/Wo genau kann ich das einstellen?
 

saila

Moderatorle

AW: PHP fehler

So sollte eine Registrierung ablaufen:

Code:
CREATE TABLE user (
    id int(10) AUTO_INCREMENT not null default '',
    benutzername varchar(40) not null default '',
    passwort int(32) not null default '',
    email varchar(50) not null default '',
    position varchar(100) not null default '',
    aktkey int(10) not null default '',
    free tinyint(2) not null default '',
    PRIMARY KEY ('id'), 
    KEY passwort ('passwort'),
    KEY aktkey ('aktkey'),
    KEY free ('free') 
    ) TYPE=MyISAM;
PHP:
<?php 
include "inc/config.php";

//Variablenvergabe für die Postdaten
$benutzername = $_POST["benutzername"];
$passwort = $_POST["passwort"];
$email = $_POST["email"];
$position = $_POST["vereinsposition"];



if(isset($_POST["button"])) {
    // prüfen ob G-VAR übergeben wurde    
    if(isset($_POST['benutzername']) AND $_POST['benutzername'] != '') { $nutzer = mysql_real_escape_string($_POST['benutzername']);} 
    else { 
        // wenn keien G-VAR gefüllt, gebe Meldung zurück
        return $ERROR_A = 1; }
    
    if(isset($_POST['passwort']) AND $_POST['passwort'] != '') { $password = md5($_POST['passwort']); } 
    else { return $ERROR_A = 2; }
    
    if(isset($_POST['email']) AND $_POST['email'] != '') { $email = $_POST['email']; } 
    else { return $ERROR_A = 3; }
    
    if(isset($_POST['position']) AND $_POST['position'] != '') { $posit = mysql_real_escpae_string($_POST['position']);  } 
    else { $posit = ''; }
    // aktiviereungskey
    $aktkey = time();
    
      mysql_query("INSERT INTO 
                          anmeldung
                            (id, 
                             benutzername, 
                             passwort, 
                             email, 
                             position, 
                             aktkey, 
                             free)
                      VALUES ('', 
                              '$nutzer', 
                              '$password', 
                              '$email', 
                              '$posit', 
                              '$aktkey'
                              '0')") or die ("Neuanmeldung: ".mysql_error());

    $row = mysql_query("SELECT 
                            id, 
                            benutzername, 
                            passwort 
                           FROM 
                               anmeldung 
                           WHERE 
                               passwort = '$password' AND 
                               benutzername = '$nutzer' 
                           ORDER BY 
                               id 
                           LIMIT 1") or die ("SELECT NewMember: ".mysql_error());
    if($s = mysql_num_rows($row) > 0) {
        $a = mysql_fetch_object($row);
    

        $empfang = $_POST['email'];
        $mailbet = "Anmeldung bei deine domain";
        $mailinh = "Hallo ".$_POST['benutzername'].",\ndamit deine dein Account aktiviert wird, klicke bitte auf folgenden Link:\n
        http://deine_domain.de/index.php?userkey=$aktkey&amp;member=".$a->id."\nMit freundlichen Schmellebach\nblalba";
        $mailsed = FROM: "<deine@mail>";
        
        mail($empfang, $mailbet, $mailinh, $mailsed);
    
        // weiterleitung auf die Index.php mit GET login ok.
          // Auf der Startseite muss ein
              // if(isset($_GET['login']) AND $_GET['login'] == 'ok') { echo "Anmeldung war erfolgreich"; }
        header("Locaton: index.php?login=ok");
        exit();
    }
    else { 
        header("Location: anmelden.php?login=error");
        exit();
    }
}
?>
 

xero7

» Unterdrück(t)er

AW: PHP fehler

Cool vielen dank, nur eine kleine sache noch, der mysql code ist irgednwie falsch.

Da kommt dnan dieser fehler:

#1067 - Invalid default value for 'id'
 

saila

Moderatorle

AW: PHP fehler

Leg die Tabelle einfach neu an.
Vergebe PrimaryKey und auto_increment-Werte

Oder pass deine bestehende Tabelle über phpmyadmin an.
Achte darauf, das mein Bsp.-Query eine anderen Tabellennamen anspricht!!

Zudem musst du für den User-Link einen Update-query erstellen, welcher den User frei schaltet (eintrag in der spalte free 1)

Will der User sich später einlogen, musst du auch die spalte free auslesen und wenn 1 dann kann er sich anmelden wenn nein,
dann nicht. Wenn du später einen User sperren willst, brauchst du lediglich die spallte free des User auf 0 setzen.
 
Zuletzt bearbeitet:

xero7

» Unterdrück(t)er

AW: PHP fehler

Klingt logisch, kenne das verfahren glaube ich auch von anderen Seiten, doch habe ich das jetzt nciht genau verstanden.

Muss ich allen ein auto_increment geben? Wie kann ich primary keys vergeben?

könntest vllt. nummerreiren was ich acmhen muss und stichpunkt wo es genau hin soll?


Vielen vielen dank saila.
 

saila

Moderatorle

AW: PHP fehler

Nin, nur die id - Spalte erhält auto_increment.

Führt dazu, das jeder User eine id automatisch erhält.


Für was habe ich eigentl. eine 18Mbit Leitung, wenn dieses Board fast 30 Sekunden für den Seitenaufbau brauch....... nervt ja mächtig........
 

xero7

» Unterdrück(t)er

AW: PHP fehler

Also:

Anlegen-Tabelle:

1.ID
2.benutzername
3.passwort
4.email
5.position
6.aktkey
7.free
8.primary key

Stimmt das, hab ich was falsch geschrieben? Fehlt was?

Einstellungen:
1. auto_increment; int 10; not null;
2. varchar(40); not null;
3. int(32); not null;
4. varchar(50); not null;
5. varchar(100); not null;
6. int(10); not null;
7. tinyint(2); not null;
8. ('id'), ;

Ist 8 auch noch eine tabelle?
Hat das default, was am Ende ist was zu bedeuten?

PHP:
   KEY passwort ('passwort'),
    KEY aktkey ('aktkey'),
    KEY free ('free') 
    ) TYPE=MyISAM;

Wo stelle ich das ein?
 

saila

Moderatorle

AW: PHP fehler

Hi,

8. ist keine Spalte sondern ein Spalten-Atribut bzw die Zuweisung eines Primärindex für die Spalte id. Zieh dir mal von MySQL AB :: Die populärste Open-Source-Datenbank der Welt unter dem Bereich Dokumentationen das Manual in chm Form. Auf dem PC installieren und im Index (nach Aufruf des Manual) gibst du primäry key ein. Nachlesen und lernen ;)

Wenn du nicht sicher in PHP-Code bist und vor allem nicht sicher einen String zu schreiben, um einen Datenbanktabelle zu erzeugen, nimm oder hol dir phpmyadmin und erzeuge darin die Tabelle. Ist für "Anfänger" wesentlich einfacher und vor allem kann man direkt Korrekturen vornehmen. Normalerweise hat dein Provider bereits phpmyadmin im Angebot oder eine andere Möglichkeit, die DB zu verwalten.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.156
Beiträge
2.581.859
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben