SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.08.2008, 17:08:56
Benutzerbild von gerstler9921
gerstler9921 gerstler9921 ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 43
Beiträge: 19
AES_ENCRYPT

Ich habe folgendes Problem.
Ich möchte gerne eine Datenbank erstellen in der ich Informationen zu meinen Büchern ablegen kann.

Dazu speichert mein PHP Skript bis jetzt die Daten in eine Datenbank mit folgenden Feldern.

id | Titel | Seitenanzahl | Notes

Das Feld Titel soll nun mit AES_ENCRYPT verschlüsselt werden.

Dazu habe ich folgendes gemacht.

Code:
$erg=mysql_db_query ($dbase,"insert into $tab values('' , AES_ENCRYPT('$title' , 'passwort') ,'$seiten','$notes');");
Dies funktioniert soweit recht gut und ich sehe in der Datenbank und in meiner Ausgabe den Wert für Titel verschlüsselt.

Nun möchte ich allerdings das in meiner Ausgabe der Wert in der Tabelle unverschlüsselt aufscheint.
Dazu habe ich folgendes probiert:

Code:
echo "<table border=1><tr><td>id</td><td>Titel</td><td>Seitenanzahl</td><td>Notes</td></tr>";

 for ($i=0;$i<$anz;$i++)

 {

 $id=mysql_result($erg,$i,"id"); 
 $title=(AES_DECRYPT('mysql_result($erg,$i,"title")' ,'passwort'));

 $seiten=mysql_result($erg,$i,"seiten");

 $notes=mysql_result($erg,$i,"notes");

 echo "<tr><td>$id</td><td>$title</td><td>$seiten</td><td>$notes</td></tr>";

 }

 echo "</table>";

Ich hoffe es kann mir jemand helfen.

lg gerstler9921
Mit Zitat antworten
  #2  
Alt 15.08.2008, 17:40:59
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: AES_ENCRYPT

Hi!
Versuche mal
Code:
$title=(AES_DECRYPT('mysql_result($erg,$i,"title")' ,'passwort'));
zu ersetzen mit
Code:
$title=(AES_DECRYPT(mysql_result($erg,$i,"title") ,'passwort'));
Du hast in der AES_DECRYPT nämlich "mysql_result($erg,$i,"title")" als String und nicht als Funktion, welche einen String zurückgibt, angegeben.

Sollte das nicht funktionieren, lass die via AES_ENCRYPT einen Titel eines Buches verschlüsseln und vergleiche diesen Wert mit dem aus der Datenbank. (Es sollten beide gleich sein)

Mfg
Mit Zitat antworten
  #3  
Alt 15.08.2008, 17:53:28
Benutzerbild von gerstler9921
gerstler9921 gerstler9921 ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 43
Beiträge: 19
AW: AES_ENCRYPT

So ich habe jetzt deinen Vorschlag ausprobiert aber leider bekomme ich wieder folgende Fehlermeldung:

Fatal error: Call to undefined function AES_DECRYPT() in /opt/lampp/htdocs/manag/ausgabe.php on line 11
Mit Zitat antworten
  #4  
Alt 15.08.2008, 18:04:55
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: AES_ENCRYPT

Du hast recht.
Ich habe mir deinen Code nur auf Syntaxfehler durchgelesen...

Es gibt in PHP keine Funktion namens AES_DECRYPT, diese Funktion muss in die mysql-query eingebaut werden.

Code:
$sql = "SELECT AES_DECRYPT(titel, 'passwort') FROM $tab WHERE id = $id";
Diese Query in der for-Schleife für jedes Buch ausführen.
Nicht gerade die beste Lösung für die Performance aber ich denke sie funktioniert.

Mfg

Geändert von Xor (15.08.2008 um 18:05:40 Uhr)
Mit Zitat antworten
  #5  
Alt 15.08.2008, 18:11:45
Benutzerbild von gerstler9921
gerstler9921 gerstler9921 ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 43
Beiträge: 19
AW: AES_ENCRYPT

Ok danke ich glaube diese Funktion habe ich auch schon irgendwo gefunden die du da gepostet hast ?!

Werde das also so regeln müssen, was nicht gerade gut für die Performance ist aber wenn es keinen anderen Weg gibt.

Jedenfalls vorest einmal danke.
Mit Zitat antworten
  #6  
Alt 15.08.2008, 18:39:35
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: AES_ENCRYPT

Natürlich gibt es einen anderen Weg.
Du könntest von deiner for-Schleife auf eine while-Schleife wechseln und die AES_DECRYPT gleich bei deiner normalen SELECT-query einbauen. Das ganze würde dann ca. so aussehn:
Code:
$sql = "SELECT * , AES_DECRYPT(title, 'passwort') as decrypt_title FROM `tabelle`";
$result = mysql_db_query($datab, $sql);

echo "<table border=1><tr><td>id</td><td>Titel</td><td>Seitenanzahl</td><td>Notes</td></tr>";
while($data = mysql_fetch_array($result)){
echo "<tr><td>".$data[id]."</td><td>".$data[decrypt_title]."</td><td>".$data[seiten]."</td><td>".$data[notes]."</td></tr>";
}
Ausserdem solltest du bei deinem echo <table> danach mit <th>-elementen arbeiten, falls es Überschriften darstellen sollen.

Mfg
Mit Zitat antworten
  #7  
Alt 15.08.2008, 21:50:31
Benutzerbild von gerstler9921
gerstler9921 gerstler9921 ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 43
Beiträge: 19
AW: AES_ENCRYPT

So ich habe jetzt den ganzen Tag an dem Code weitergearbeitet und bin jetzt beim letzten Teil angelangt. Nämlich der Verschlüsselung.

Danke dass du mir einen besseren Weg gepostet hast allerdings verstehe ich nicht ganz was du bei einigen Bereichen machst.

Kannst du den Code kurz kommentieren - speziell das fett markierte ?

Zitat:
$sql = "SELECT * , AES_DECRYPT(title, 'passwort') as decrypt_title FROM `tabelle`";
$result = mysql_db_query($datab(hier meinst du $data oder - aber wie kommst du auf diese Variable ?), $sql);

echo "<table border=1><tr><td>id</td><td>Titel</td><td>Seitenanzahl</td><td>Notes</td></tr>";
while($data = mysql_fetch_array($result)){
echo "<tr><td>".$data[id]."</td><td>".$data[decrypt_title]."</td><td>".$data[seiten]."</td><td>".$data[notes]."</td></tr>";
}

Geändert von gerstler9921 (15.08.2008 um 21:51:54 Uhr)
Mit Zitat antworten
  #8  
Alt 16.08.2008, 15:24:30
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: AES_ENCRYPT

as decrypt_title --> SELECT feld AS(=als) anderername FROM tabelle
Das Ergebnis der Query führt nun den Wert aus "feld" unter "anderername". Nähere Erklärungen in den meisten Einsteiger-MySQL-Tutorials.

mysql_db_query($datab,$sql);
Da du in deinem ersten Text auch diese Funktion angeführt hast, dachte ich mir es wäre eine Erleichterung für dich wenn wir dabei bleiben. $datab ist der String in dem der Name der Datenbank angeführt ist.
Diese Funktion sollte man allerdings NICHT mehr verwenden. Benutze stadtdessen zuerst mysql_select_db() und danach weiter mysql_query().

Funktionserklärungen hier oder Hr. Google fragen.

mysql_fetch_array($result)
Die Funktionserklärung kann man selbst finden.
In Verbindung mit while dient sie dazu, eine Reihe Datensätze nach der anderen aus dem Ergebnis der Datenbank-Abfrage zu holen und in einen Array zu speichern.

Zitat:
Danke dass du mir einen besseren Weg gepostet hast
Gern geschehen

Zitat:
allerdings verstehe ich nicht ganz was du bei einigen Bereichen machst
Ich glaube dir fehlt es etwas an Basis-Wissen. Es gibt einige gute PHP & MySQL-Tutorials im Internet, das könnte dir wahrscheinlich auch weiterhelfen.

Mfg

Mfg

Geändert von Xor (16.08.2008 um 15:26:04 Uhr)
Mit Zitat antworten
  #9  
Alt 16.08.2008, 20:09:16
Benutzerbild von gerstler9921
gerstler9921 gerstler9921 ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 43
Beiträge: 19
AW: AES_ENCRYPT

So danke für deine erneute Antwort.
Du hast Recht ich bin noch kein Experte bezüglich php und
verwendete es bis jetzt nur um kleine Sachen die datenbankorientiert waren in
meine Homepages einzubauen.
Komplexes arbeiten mit arrays habe ich noch nicht gemacht.

Ich werde allerdings mithilfe deiner erklärung versuchen die Verschlüsselung einzusetzten.

Ein kleine Frage am Rand die du mir vielleicht beantworten könntest.

Angenommen ich durchsuche 1000 bücher bei denen überall zuerst der Titel entschlüsselt werden muss,
Welche Performanceeinbußen muss ich erwarten ? dh um wieviel länger würde das dauern
Kann es leider nicht testen weil ich noch keine 1000 bücher drinnen habe !

(Soweit ich weiß ist das bei AES bei zB Truecrypt bis zu 25%.)
Mit Zitat antworten
  #10  
Alt 16.08.2008, 20:56:24
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: AES_ENCRYPT

Da es, wie immer, von mehreren Faktoren anhängig ist, kann man da keine pauschale Antwort geben.

Aber messe die Performance mit der Anzahl der Bücher über die Du zurzeit verfügst. Dann vervielfältigst Du Deine Datenbank auf > 1.000 Einträge und misst wieder die Zeit. Und schon kannst Du Dir Deine Frage selber beantworten.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:54:37 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt