PHP Portal Script Hilfe

Active member
Hi!

Ich habe mir seit langen mal wieder vorgenommen nen bissel mit php und mysql Datenbanken zu werkeln
Da habe ich mir überlegt was währe intressant und was mich vieleicht schon öfters gereitzt hat.

Bin schliesslich darauf gekommen das ich immer schon mit den gedanken gespielt habe ein Portal script zu erstellen ich hatte sorgar mal vor einigen Jahren angefangen eins zu erstellen. Die Daten sind jedoch verloren gegeangen mit den Jahren und entsprechen auch nicht mehr den vorstellungen die ich jetzt habe.

Meine Vorstellung an solch eine art von skript währe natürlich soll es für jeden leicht zu installieren und zu benutzen seien.
Dann soll man das Desing leicht und inviduell gestallten können das man erst erkennt das es ein Portal ist wenn man die copyrights sieht.

das portal soll alles beinhalten new,forum,guestbook usw.
was man halt alles so braucht und auch möglichkeiten externe scripts leicht einzibinden oder addons nachträglich einzubauen.

------Zum eigendlichen-------

Habe diesen Thread eröffnet weil mein php wissen dafür das ich mir das meiste aus dem stehgreif beigebracht habe ganz gut ist jedoch es immer die ein oder andere Frage giebt die man mit blosen googlen oder anderswo nachschlagen nicht so leicht beantwortet bekommt.

Werde hier Fragen oder probleme schildern und hoffen das mir dort geholfen werden kann da ich weis das hier nen paar helle köpfe hausen die sich ganz gut auskennen ^^.

nagut soviel dazu mal sehen die ersten probleme werden warscheinlich schon morgen auftauchen so wie ich mich kenne.

denke das erste problem wird bei den Templates endstehen wo ich noch nicht genau weis wie ich das mache soll aber mal sehen werd da erstmal drüber schlafen vieleicht komm ich selber drauf wunder giebts immer wieder ^^.

fg alfi
 
ja gerne ^^
das erste was ich gerne wissen würde ist folgenes:

ich arbeite mit templates "desing datein also html usw."

dort würde ich am liebsten überhaupt kein php drin haben also include´s für menu usw.

ich habe mal gesehn bei einem protal wo solche templates benutzt wurden das dort einfach zB.

{leftmenu} an der demensprechenden stelle in der desing datei stand wo das linke menu später auftauchen soll.

jetzt meine frage wie geht das muss man die dateien ihrgendwie prasen das er die wörter raussucht und mit eine "if" schleife dann den entsprechenden befehl in dem fall include auszuführen?

oder denk ich schonwieder zu kompliziert ^^.

hier mal der link zu dem projekt bzw wer will kann gucken wie es vorran geht ^^.



fg alfi
 
und was bringt mir das?
ich mach das html mit dreamweaver cs4 weil denke viele endnutzer werden denke auch dreamweaver nutze und so bleibts dann 100% gewährleistet das er das richtig anzeigt.

meine frage ist allerdings noch nicht beantwortet ^^.

fg alfi
 
Dreamweaver benutzen höchstens irgendwelche Anfänger die kein HTML kennen und nur Seiten zusammen klicken wollen. Wer ein eigenes Web-Portal entwickeln will sollte schon mit einem Editor seinen eigenen Code schreiben. HTML ist jetzt nicht soo komplex, dass man dafür irgendeinen WYSIWYG-Editor bräuchte (abgesehen davon, dass damit niemals W3C-konformer Quelltext entsteht).

Der Vorteil von DIVs? Tabellen sind einfach Tabellen und nur zum Anzeigen von tabellarischen Daten gedacht - damit baut man kein Design. Außerdem macht mans Text-Readern beinahe unmöglich eine Seite anständig vorzulesen, die aus einem Dutzend geschachtelten Tabellen besteht (Stichwort Barrierefreiheit).
 
ja sorry da muss ich mich mal reinfuchsen ich hab mich bisher immer damit zufrieden gegeben ^^.

aber im großen und ganzen betrifft das eh nur die templates. die sind derzeit eh nur sowas wie platzhalter oder testobjekte ^^.

das eigendliche problem ist die ganze php arbeit und das so zu machen wie ichs mir wünsche.

hab ja gesagt hab nur ein gefährliches halbwissen ^^

aber nochmal drauf hinzuweisen giebts neh möglichkeit wenn ich in einer datei die kein php nur reinen html code besitzt

ein bestimmtes wort aus dieser datei zu suchen und an dieser stelle dann ein php befehl hinzusetzen zb. include oder nen echo ausgabe.

fg alfi
 
Ich hatte mir da mal ne kleine Funktion gebaut:

PHP:
function template_replace($source, $find, $replace){
    return preg_replace("/\\$\\{".$find."\\}/",$replace, $source);
}

Als $source wird ein Text angegeben in dem die zu ersetzende Variable ist (Die Variable wird von ${..} umschlossen). Die Variable wird in $find übergeben und wird mit dem in $replace übergebenen Wert überschrieben.

z.b. $source="Hallo ${text1}"
dann wird template_replace($source, "text1", "Welt")
"Hallo Welt" zurückliefern

Das ist nicht wirklich optimiert aber relativ einfach.
 
joa also muss ich dann denk ich ja auch neh mit file() arbeiten da ich ja eine datei auslese die ich dan durch deinen befehl jagen werde ^^.

hab schon ähnlich gedacht muss noch mal genau überlegen wie ich den klein sprung mache diese daten dann zu nehmen ohne das ich neh datei übeschreibe und das in die ausgabe zu bringen.

naja bin grade eh verwirt giebt da mir sicherheit neh simple lösung :p
werd einfach mal rumprobieren ist imma noch das beste mittel ^^

fg alfi
 
so hänge grade nen bisschen!
und zwar wollte ich mit den seitenmenues etwas weiter machen!
Problem ich will über die datenbank php befehle ausgeben.

zum beispiel <? include "datei.php"; ?> soll ich der datenbank stehen und dann normal ausgeben werden nur das logischer weise wenn ich das so mache man den code sehen kann aber der befehl nicht ausgeführt wird.

ich will gerne include befehle in die datenbak schreiben können um später leicht und einfach die seite per datenbank zu verändern wie es mir gefällt.

die frage ist nur ob das möglich ist und wie wenn das in eine art bb-code ginge wie zB. [include=xxx.php] währe das echt klasse.

fg alfi
 
Warum speicherst du nicht einfach nur den Dateinamen in der Datenbank? Dann kannst du mit include($bla) arbeiten.
 
hi! so hab mal wieder nen paar probs ^^.

jetzt gehts um ein php/mysql basierendes login script mit sessions.

hab bisher noch nix mit sessions gemacht daher sehr planlos!

daher bin ich erstmal einer anleitung gefolgt um zu schauen wies geht:



aber das problem ist es geht nicht ^^



nick: admin
pw: test

das prob kommt nachdem man sich einloggt auf der geheim.php

Warning: session_start() [ ]: Cannot send session cache limiter - headers already sent (output started at /kunden/291204_23566/webseiten/geheim.php:2) in /kunden/291204_23566/webseiten/geheim.php on line 4
Sie sind eingeloggt.

sehe zwar das es um den befehl sessions geht aber weis net warum oder was das genau zu bedeuten hat.

hat wer nen plan was fürn fehler ich gemacht habe?

fg alfi
 
Quelltext wäre ganz hilfreich...

Mal ins Blaue geschoßen: du kannst session_start() nur am Anfang einer Datei (bevor überhaupt irgendetwas anderes an den Browser gesendet wird) und dementsprechend nur ein mal pro Datei schreiben. Spontan rate ich mal du hast da wild ineinander includiert und in einer 2. Datei ebenfalls session_start() stehen.
 
also daran kanns net liegen ^^
ich hab das zum testen 1 zu 1 nachgemacht past/copy "natürlich mysql ect angepasst"

und in jeder datei steht session an erster stelle genau wie es dort angegeben wird.

fg alfi
 
Ohne Quelltext zu sehen kann man das nur erraten...

Bist du sicher, dass vor dem session_start() (und vor dem <?php) nichts steht? Auch keine nicht druckbaren Zeichen?

Der Code selbst sollte einwandfrei funktionieren...

Edit: Du hast zumindest in genau den betreffenden Dateien vor der Warnung ein <br /> und ein \n stehen. Ob das jetzt von der Warnung kommt oder tatsächlich in den Dateien steht weiß ich nicht.
 
Zuletzt bearbeitet:
lol sowas xD
hab im quelltext nen zeilenbruch mitkopiert aber net gedacht das das der fehler sein könnte weil ja kein <br> oder sonstiges dort steht ^^

---

jetzt die frage wie kriege ich von dem eingeloggten user den usernamen bzw einträge aus seiner tabelle wenn er einloggt?

damit ich sowas wie eine begrüßung machen kann und oder spezielle rechte erstelln kann damit einige leute mehr oder weniger sehen.

hier mal die quellcodes der dateien:

sessionhelpers.inc.php
PHP:
<?php


/**
 * @return void
 */
function connect () {
    $con = mysql_connect('localhost', 'nick', 'pass') or exit(mysql_error());
    mysql_select_db('datenbank', $con) or exit(mysql_error());
}


/**
 * @param string $name
 * @param string $pass
 * @return boolean
 */
function check_user ( $name, $pass ) {
    // magic quotes anpassen
    if ( get_magic_quotes_gpc() ) {
        $name = stripslashes($name);
        $pass = stripslashes($pass);
    }
    // escapen von \x00, \n, \r, \, ', " und \x1a
    $name = mysql_real_escape_string($name);
    // escapen von % und _
    $name = str_replace('%', '\%', $name);
    $name = str_replace('_', '\_', $name);

    $sql = 'SELECT UserId FROM users WHERE UserName = \'' . $name . '\' AND UserPass=\'' . md5($pass) . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    if ( mysql_num_rows($result) == 1 ) {
        $user = mysql_fetch_assoc($result);
        return ( $user['UserId'] );
    } else {
        return ( false );
    }
}


/**
 * @param int $userid
 * @return void
 */
function login ( $userid ) {
    $sql = 'UPDATE users SET UserSession = \'' . session_id() . '\' WHERE UserId = ' . ((int)$userid);
    if ( !mysql_query($sql) ) {
        exit(mysql_error());
    }
}


/**
 * @return boolean
 */
function logged_in () {
    $sql = 'SELECT UserId FROM users WHERE UserSession = \'' . session_id() . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    return (mysql_num_rows($result) == 1);
}


/**
 * @return void
 */
function logout () {
    $sql = 'UPDATE users SET UserSession = NULL WHERE UserSession = \'' . session_id() . '\'';
    if ( mysql_query($sql) ) {
        exit(mysql_error());
    }
}

connect();

?>
login.php
PHP:
<?php

include_once('sessionhelpers.inc.php');

if ( isset($_POST['login']) ) {
    $userid = check_user($_POST['username'], $_POST['userpass']);
    if ( $userid ) {
        login($userid);
    } else {
        echo '<p>Ihre Anmeldedaten waren nicht korrekt!</p>';
    }
}

if ( !logged_in() ) {
    echo <<<END
<form method="post" action="index.php?site=$site">
<label>Benutzername:</label> <input name="username" type="text"><br />
<label>Passwort:</label> <input name="userpass" type="password" id="userpass"><br />
<input name="login" type="submit" id="login" value="Einloggen">
</form>
END;
} else {
    echo '<p><a href="index.php?site=logout">Ausloggen</a></p>';
}

?>
geheim.php
PHP:
<?php

include_once('sessionhelpers.inc.php');

echo 'Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.<p />';

if ( !logged_in() ) {
    echo '<p><a href="login.php">Anmelden</a></p>';
}



if ( logged_in() ) {
    echo '<p>Geschützter Bereich</p>';

    echo '<p><a href="logout.php">Ausloggen</a></p>';
}

?>
der session_start befehl ist in einer anderen datei .


fg alfi
 
Zuletzt bearbeitet:
hat da keiner nen plan ich verzweifel xD
ich muss das ihrgendwie so hinbekommen das ich den namen des eingeloggten anzeigen kann und evtl auch neh andere spalte in der tabelle.

ich steig durch das scrpt noch net ganz durch bzw. wie ich das verändern muss damit das dan so funzt wie ichs haben will.

fg alfi
 
Sorry, ich hab den Thread das letzte Mal vor deiner Bearbeitung aufgerufen und danach wurde er im Kontrollzentrum nicht mehr angezeigt.

PHP:
$sql = 'SELECT UserName FROM users WHERE UserSession = \'' . session_id() . '\'';
 
brauchst dich doch net entschuldigen xD

aber habs geahnt das das so simple ist funtzt auch 1a also danke dir nochmal.

fg alfi
 

Online-Statistiken

Zurzeit aktive Mitglieder
1
Zurzeit aktive Gäste
298
Besucher gesamt
299

Neueste Themen

Beliebte Forum-Themen

X
Keine passende Antwort gefunden?