php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 29-07-2009, 19:47
PHP&&C++
 Registrierter Benutzer
Links : Onlinestatus : PHP&&C++ ist offline
Registriert seit: Jul 2009
Beiträge: 7
PHP&&C++ befindet sich auf einem aufstrebenden Ast
Standard

Habs eh schon... Trotzdem !
Mit Zitat antworten
  #17 (permalink)  
Alt 29-07-2009, 20:08
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Ich muss das anders ausdrücken

PHP-Code:
$row mysql_fetch_object($login_query); 
Ohne Treffer ergibt das:
Trotzdem gehört da das while() nicht hin. Wenn man nur einen Wert erwartet, sollte man keine Schleifen benutzen.

Beispiel:
PHP-Code:
if ($row mysql_fetch_object($login_query)) {
    
$userid $row->id;
} else {
    
$userid null;

Mit Zitat antworten
  #18 (permalink)  
Alt 29-07-2009, 20:11
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von PHP&&C++ Beitrag anzeigen
Habs eh schon... Trotzdem !
Dann bitte auch die Lösung für andere posten.

Danke
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #19 (permalink)  
Alt 29-07-2009, 20:24
piratos
 Guest
piratos
Beiträge: n/a
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Trotzdem gehört da das while() nicht hin. Wenn man nur einen Wert erwartet, sollte man keine Schleifen benutzen.
Wer lesen kann hat manchmal Vorteile:

Zitat:
Jein
Für Leute aus der anderen Region - das bedeutet man kann das eine wie das andere machen, wobei ich persönlich auch if bevorzugen würde, aber es gibt keinerlei Zwang bis auf die Meinung anderer.

Und - mal am Rande - Performance:

Jeweils das beste Ergebnis aus 10 Abfragen:

while 4.6014785766602E-5

if 5.1021575927734E-5

Ist zwar für den Fall hier völlig uninteressant, zeigt aber das man nichts verliert.
Mit Zitat antworten
  #20 (permalink)  
Alt 29-07-2009, 20:33
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nur mal so zum Verständniss, vielleicht gibt es ja auch andere Lösungen, ich würde es zB. so machen.

PHP-Code:
$row mysql_fetch_object($login_query); 
if(!empty(
$row['user_id'])) {
echo 
'Hallo du .$row['user_id'];
}
else {
echo '
Zugangsdaten falsch!;

wie willst du sonst überprüfen ob der Login erfolgreich war, wenn nicht mit einer IF Abfrage?

ich muß auch gestehen das ich mysql_fetch_object nicht verwende.
Mit Zitat antworten
  #21 (permalink)  
Alt 29-07-2009, 20:46
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Wer lesen kann hat manchmal Vorteile:

Für Leute aus der anderen Region - das bedeutet man kann das eine wie das andere machen, wobei ich persönlich auch if bevorzugen würde, aber es gibt keinerlei Zwang bis auf die Meinung anderer.

Und - mal am Rande - Performance:

Jeweils das beste Ergebnis aus 10 Abfragen:

while 4.6014785766602E-5

if 5.1021575927734E-5

Ist zwar für den Fall hier völlig uninteressant, zeigt aber das man nichts verliert.
Es geht weder um Performance noch um den persönlichen Geschmack, sondern es geht um den guten Programmierstil. Wenn man nicht mehrere Werte behandelt, sollte man auch keine Schleifen verwenden, sonst könnte ein anderer Programmierer etwas anderes vermuten.

Natürlich kann man es machen und while verwenden. Man kann sogar sehr vieles machen, ohne dass es technisch gesehen "falsch" ist. Viele Wege führen nach Rom. Aber besser ist, wenn der Weg dreispurig, asphaltiert und vernünftig Beschildert ist. Man sollte niemanden auf den Schotterweg schicken, auch wenn er auch damit zum Ziel kommt.
Mit Zitat antworten
  #22 (permalink)  
Alt 29-07-2009, 21:17
piratos
 Guest
piratos
Beiträge: n/a
Standard

Zitat:
den guten Programmierstil
Ich möchte dir nicht zu Nahe treten und auch nicht beleidigen, aber das geht mir langsam auf den Senkel.

Schreibe deinen Stil wie es dir gefällt aber bitte trete nicht als selbst ernannter Stilayatollah auf und vor allem zwinge deinen Stil den anderen nicht auf bzw. versuche nicht andere diesbezüglich ständig zu bevormunden.
Mit Zitat antworten
  #23 (permalink)  
Alt 29-07-2009, 21:25
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Ich möchte dir nicht zu Nahe treten und auch nicht beleidigen, aber das geht mir langsam auf den Senkel.

Schreibe deinen Stil wie es dir gefällt aber bitte trete nicht als selbst ernannter Stilayatollah auf und vor allem zwinge deinen Stil den anderen nicht auf bzw. versuche nicht andere diesbezüglich ständig zu bevormunden.
Das ist nicht "mein" Stil. Wenn man in einem Team arbeitet, muss man so programmieren, dass sich auch derjenige sofort auskennt, der den Code zum ersten mal ansieht. Und wenn du for- oder while-Schleifen für Daten verwendest, die nur einmal vorkommen können, dann vermittelst du demjenigen eine falsche Absicht. Das kann im besten Fall den Programmierer nur ein paar Sekunden aufhalten, aber im blödesten Fall neue Fehler provozieren. So oder so ist das einfach eine schlechte Art und Weise.

Von mir aus kannst du in deinem stillen Kämmerlein so programmieren, wie du es für richtig haltest. Aber bring nicht andere dazu zu glauben, dass es "eh egal" ist, wie sie es machen. Das ist es nämlich nicht.

Und ich denke auch, dass mir hier viele Recht geben werden. Und denen hab ich bestimmt nicht "meinen" Stil aufgezwungen, sondern das sagt einem einfach der gesunde "Programmierverstand".

Geändert von h3ll (29-07-2009 um 21:39 Uhr)
Mit Zitat antworten
  #24 (permalink)  
Alt 29-07-2009, 21:36
piratos
 Guest
piratos
Beiträge: n/a
Standard

Jawohl Ayatollah - blah blah und gut ist.
Mit Zitat antworten
  #25 (permalink)  
Alt 30-07-2009, 09:21
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Jetzt ist hier Ruhe im Karton. Sonst hau ich dazwischen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #26 (permalink)  
Alt 30-07-2009, 09:34
PHP&&C++
 Registrierter Benutzer
Links : Onlinestatus : PHP&&C++ ist offline
Registriert seit: Jul 2009
Beiträge: 7
PHP&&C++ befindet sich auf einem aufstrebenden Ast
Standard

Okay also meine Lösung:
Code:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$session = session_id();
$connection = mysql_connect('localhost','user','geheim') or die("Keine Verbindung zum Server."); 
mysql_select_db('datenbank') or die("Keine Verbindung zur Datenbank."); 
$pass = md5($password);
$user = $username;
$login = 'SELECT id FROM members WHERE name="'.$user.'" AND pass="'.$pass.'" LIMIT 1';
$login_query = mysql_query($login);
while($row = mysql_fetch_object($login_query)) {
$userid = $row->id;
}
echo 'Willkommen User-Nummer ';
echo $userid;
?>
<form action="login.php" method="post">
                           Benutzername: <input type="text" name="username" /><br />
                           Passwort: <input type="password" name="password" /><br />
                           <input type="submit" name="submit" value="Einloggen" />
                           </form>
Mit Zitat antworten
  #27 (permalink)  
Alt 30-07-2009, 09:44
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Dein Script ist anfällig für SQL-Injections. Außerdem ist die While-Schleife sinnlos.
Mit Zitat antworten
  #28 (permalink)  
Alt 30-07-2009, 14:53
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Ich muss das anders ausdrücken

PHP-Code:
$row mysql_fetch_object($login_query); 
Ohne Treffer ergibt das:
Notice: Trying to get property of non-object
Auch nicht so ganz korrekt.

Die While-Schleife macht ja genau das gleiche - sie wendet mysql_fetch_XY so lange an, bis der Rückgabewert false lautet.
Wenn es kein Ergebnis gibt, dann wird der Anweisungsblock der While-Schleife auch nicht durchlaufen.

Die von dir genannte Meldung bekommt man erst im nächsten Schritt, wenn man versuchen würde, auf Eigenschaften von $row zuzugreifen, obwohl $row eben nicht das erwartete Objekt, sondern auch wieder nur false enthält.

Und die While-Schleife "rettet" im eingangs geposteten Script auch nicht - wenn die nicht durchlaufen wird, dann hat halt $userid keinen Wert, und ist beim anschliessenden Versuch, es auszugeben, nicht vorhanden und wirft dann an der Stelle eine entsprechende Meldung.

Die While-Schleife finde ich jedenfalls auch fehl am Platze, wenn lediglich ein Datensatz erwartet wird. Da nutze ich mysql_num_rows, und entscheide an Hand dessen, ob ich mir einen Wert aus diesem einen Datensatz zur Ausgabe hole, oder melde dass gar nichts gefunden wurde.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #29 (permalink)  
Alt 30-07-2009, 15:37
piratos
 Guest
piratos
Beiträge: n/a
Standard

Es kann hier nie um die letzte Ausarbeitung eines geposteten Fragescripte gehen, das wäre völlig unsinnig, da kommt man wegen kleinster Fragestellung ins Geschwafel ohne Ende und genau das hilft dem Fragenden kein Stück weiter, ja macht sogar das Forum selbst zunehmend uninteressanter.

Ich z.B. würde immer eine DB Klasse (nämlich meine) verwenden, da dort alles abgehandelt ist.

So eine normale Abfrage sieht da z.B. technisch so aus (Auszug):
PHP-Code:
$result mysqli_query($this->db,$sql);
if (
preg_match("/^(select|explain|show|describe)\s+/i"$sql) )
{
  
$this->num_rows mysqli_num_rows($result);
}
elseif (
preg_match("/^(insert|delete|update|replace)\s+/i"$sql) )
{
  
$this->rows_affected mysqli_affected_rows($this->db);

und man kann feststellen, das wir, wenn man es selbst macht, eigentlich identisch abarbeiten.

Man muss auch klar sehen, das hier in der Regel Leute Fragen die nicht so gewaltige Kenntnisse haben.

Ein solches Ausschweifen würde diesen nichts bringen und nur höchst verunsichern.

So auch das ewige Stilgeschwafel - das macht einen Anfänger bestimmt nicht schlauer.

Wer einen tollen Stil hat oder sich stur an eine interne Arbeitsanweisung seiner Firma hält und meint das wäre Gott und die Welt - ok - seine Sache, der soll das doch hier in ein Tutorial verkünden, das können dann alle lesen und sich dran halten oder nicht und nicht immer dann die Wundertüte öffnen, wenn einem nichts anderes mehr einfällt.

So etwas als tollen Stil zu bezeichnen kann ja wohl nicht das richtige sein.

PHP-Code:
if ($row mysql_fetch_object($login_query)) {
    
$userid $row->id;
} else {
    
$userid null;

dann würde das besser aussehen.
PHP-Code:
// var deklarieren und initalisieren
$userid null;
if (
$row mysql_fetch_object($login_query)) 
    
$userid $row->id
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild wird nicht angezeigt max479 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 23-10-2007 11:44
PHP Script wird nicht angezeigt popu PHP Developer Forum 7 03-01-2007 14:32
Zweite mySQL Abfrage wird nicht angezeigt! Besth PHP Developer Forum 8 01-06-2006 15:08
jpg wird nicht angezeigt ? sphings PHP Developer Forum 7 04-04-2006 22:58
[MySQL 4.0] Fehlermeldungen und die Site wird nicht angezeigt.... kingrp SQL / Datenbanken 9 17-09-2004 02:44

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:18 Uhr.