Fremde Scripte

In diesem Forum befinden sich alte Themen.
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Fremde Scripte

Beitrag von daniel »

Ich verstehe nicht, warum die Tabelle pinsx die Zeile gebot hat, obwohl da doch eigentlich nur die gültigen Codes "aufbewahrt" werden sollen, wenn ich das richtig verstehe.

edit: im folgenden Code wird jetzt zusäzlich geprüft ob der Code usergebunden ist und wenn ja, ob der eingeloggte user ihn verwenden darf. auch wieder mit der id des users. siehe unten.

für das überprüfen des gültigen Codes würde ich dann mal das hier vorschlagen:

Code: Alles auswählen

$result = mysql_query("SELECT id FROM pinsx WHERE code = '$code'");
if (isset($result))
{
    #prüfen ob dieser Code für diesen benutzer war oder nicht usergebunden
    $result = mysql_query("SELECT user FROM pinsx WHERE code = '$code'");
    if (isset($result))
    {
        #code ist usergebunden
        if ($result == $userdata['id'])
        {
            #code ist für den usernamen => weitermachen
        }else
        {
            #code ist nicht für den usernamen => Fehlermeldung ausgeben
        }
    }else
    {
        #code Gültig und nicht usergebunden => weitermachen
    }
    
}else
{
    #code ungültig => fehlermeldung ausgeben
} 
und dann empfehle ich dir noch eben den User zu kontrolliren:

Code: Alles auswählen

$result = mysql_query("SELECT id FROM easyhp_user WHERE name = '$user'");
if (isset($result))
{
    #benutzername Gültig => weitermachen
    
    #die user id benutzen, damit beim namenswechsel des user die zugehörigkeit bestehen bleibt.
    $user = $result;
}else
{
    #benutzername ungültig => fehlermeldung ausgeben
} 
bitte den tabbellenprefix beachten

sollte die Variabel $user den user beinhalten, der das Formular abgesendet hat ist es einfacher:

Code: Alles auswählen

$user = $userdata['id'];  
hier wird also das Formular-Feld User überflüssig.

dann zum darstellen einer Liste bzw eines Artikels sollte man aber den Usernamen und nicht die id anzeigen:

Code: Alles auswählen

function get_username($userid)
{
    $result = mysql_query("SELECT name FROM easyhp_user WHERE id = '$userid'");
    if (isset($result)
    {
        $username = $result;
    }else
    {
        $username = False;
    }
    return $username;
} 
auch hier bitte den tabbellenprefix beachten

diese Funktion kannst du dann verwenden um den usernamen zu einer id auszugeben.
Benutzeravatar
Rizzo
Inaktiv
Beiträge: 86
Registriert: 3. Januar 2009, 19:27
EasyHP Website: http://www.GeizPirat.de
Kontaktdaten:

Re: Fremde Scripte

Beitrag von Rizzo »

Dann müßte ja aber auch beim generieren der Codes diese dem entsprechendem User zugeordnet werden.
Dies passiert bisher nicht.Oder denke ich jetzt falsch.
Zuletzt geändert von Rizzo am 14. Januar 2009, 14:37, insgesamt 1-mal geändert.
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Fremde Scripte

Beitrag von daniel »

stimmt ganz vergessen. für das herausfinden der userid kannst du diese Funktion verwenden:

Code: Alles auswählen

function get_userid($username)
{
    $result = mysql_query("SELECT id FROM easyhp_user WHERE name = '$username'");
    if (isset($result))
    {
        $userid = $result;
    }else
    {
        $userid = "";
    }
    return $userid;
} 
Der entsprechende Teil für die administration könnte dann so aussehen:

Code: Alles auswählen

//benutzername vom Formular übergeben:
$name = $_POST['name'];
$userid = get_userid($name);

for ($i=0; $i<=3; $i++)
{
    echo "<b>Code".$i."</b><br>";   
    do{
        $pin = generate_pin ();               //Pin generieren
        $result = mysql_query("SELECT id FROM a1 WHERE code = '$code'");    
        //überprüfen, ob es den code schon gibt.
        $datacode = mysql_num_rows($result);
    }while ($datacode != 0);
    //Pin ausgeben:
    echo $pin;


    $eintrag = "INSERT INTO pinsx
    (pin, name)
    VALUES 
    ('".$pin."',
    '".$userid."')";

    $eintragen = mysql_query($eintrag) or die(mysql_error());
}  
Das Script übernimmt den Usernamen aus den Formulardaten und findet die id des users heraus. danach wird ein Code erstellt, der dann nochmal durch die Datenbank vergleicht wird um zu überprüfen, ob es diesen Code schon gibt. (das wurde bis jetzt garnicht berücksichtigt)
wenn es den schon gibt, wird ein neuer code erzeugt,solange bis ein noch nicht existierender Code erstellt wurde.
nachdem der Code und die Userid in die Datenbank eingetragen wurden, wird nochmal ein Code generiert (das ganze 3mal mit dem gleichen Benutzer)

Alle Codes wieder ohne garantie oder haftung ;)
Zuletzt geändert von daniel am 8. Januar 2009, 16:17, insgesamt 3-mal geändert.
Benutzeravatar
Rizzo
Inaktiv
Beiträge: 86
Registriert: 3. Januar 2009, 19:27
EasyHP Website: http://www.GeizPirat.de
Kontaktdaten:

Re: Fremde Scripte

Beitrag von Rizzo »

[quote="daniel"]stimmt ganz vergessen. für das herausfinden der userid kannst du diese Funktion verwenden:

Eingebaut.....
:arrow: Parse error: syntax error, unexpected '{' in /home/www/web188/html/auk/cms/codes1.php on line 31

:?: :?:
Zuletzt geändert von Rizzo am 14. Januar 2009, 14:37, insgesamt 1-mal geändert.
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Fremde Scripte

Beitrag von daniel »

oh ja da hab ich eine Klammer vergessen:
if (isset($result))
{
hab ich oben berichtigt

PS.:

Code: Alles auswählen

    if (isset($result)
    { //hier entsteht der Fehler  
Benutzeravatar
Rizzo
Inaktiv
Beiträge: 86
Registriert: 3. Januar 2009, 19:27
EasyHP Website: http://www.GeizPirat.de
Kontaktdaten:

Re: Fremde Scripte

Beitrag von Rizzo »

Nun kommt:

Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in /home/www/web188/html/auk/cms/codes1.php on line 80


Habe ich was falsch eingesetzt?
Zuletzt geändert von Rizzo am 14. Januar 2009, 14:38, insgesamt 1-mal geändert.
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Fremde Scripte

Beitrag von daniel »

ne.
Ich habe die falsche Syntax verwendet.

Code: Alles auswählen

for $zaehler in range (0,3)
{
} 
wäre die Syntax für eine For-schleife in Python. in php sieht das so aus:

Code: Alles auswählen

for ($i=0; $i<=3; $i++)
{
} 
naja. habe wieder in dem anderen Post das berichtigt.
hoffentlich stimmt jetzt alles :)
Zuletzt geändert von daniel am 8. Januar 2009, 16:23, insgesamt 1-mal geändert.
Benutzeravatar
Rizzo
Inaktiv
Beiträge: 86
Registriert: 3. Januar 2009, 19:27
EasyHP Website: http://www.GeizPirat.de
Kontaktdaten:

Re: Fremde Scripte

Beitrag von Rizzo »

...... :oops: ...traue mich das gar nicht zu sagen, ihr habt schon soviel gemacht.
Leider wird jetzt kein Code mehr angezeigt bzw. generiert und in die DB geschrieben.... :oops:

Hier noch mal der gesamte Code:
Zuletzt geändert von Rizzo am 14. Januar 2009, 14:38, insgesamt 1-mal geändert.
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Fremde Scripte

Beitrag von daniel »

nene. Ich hab ja schon wieder den Fehler verursacht, da ich noch nicht mit for schleifen vertraut bin.
in den Header muss nicht die abbruchbedingung sondern die Bedingung, wenn es weiterlaufen soll.

finde:

Code: Alles auswählen

$userid = get_userid($name);

for ($i=0; $i>=3; $i++)
{
    echo "<b>Code".$i."</b><br>"; 
ersetze mit:

Code: Alles auswählen

$userid = get_userid($name);

for ($i=0; $i<=3; $i++)
{
    echo "<b>Code".$i."</b><br>"; 
kurz: das > durch das < ersetzen.
Benutzeravatar
Rizzo
Inaktiv
Beiträge: 86
Registriert: 3. Januar 2009, 19:27
EasyHP Website: http://www.GeizPirat.de
Kontaktdaten:

Re: Fremde Scripte

Beitrag von Rizzo »

Hi,
die Codes werden eingetragen, allerdings steht in der DB :

Resource id #55

und nicht der Name.
Daher komt auch beim bieten auch die Ausgabe für die Fehlermeldung

--> #code ist nicht für den usernamen => Fehlermeldung ausgeben <--


Gruß

Rizzo
Gesperrt