Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted

A switch pont ezt csinálja. Csak akkor hajtja végre az case-ben lévõ utasítást, ha a feltétel teljesül, majd a break-re kilép és a switch után folytatódik a program.

Posted

Egy olyan gondom van, hogy már megint a suli eNaplóját kellene kiraknom a netre, de a tavalyi megoldást az igazgató leszavazta. A kölkek jegyei egy-egy 12345678901.txt nevû fájlban vagynak, ahol a hosszú szám a gyerek OM-azonosítója, de lehet bármi más is, mindegy. Szóval az ig. szerint felhasználónév+jelszó a jövõ záloga, legyen neki. Lényeg, hogy nem tudom kikerülni a php-t. Az az elképzelésem, hogy egy szép hosszú szövegfájlba berakom a Név-Jelszó-Fáljnév hármast, a honlapon meg lesz két mezõ: Felhasználó és jelszó. Beírja a felhasználónevet és a jelszót, a program végigszánt a szövegfájlon, és ha talál ilyen nevet és a jelszó is stimmel, kidobja a jegyekfájlt, egyéb esetben meg egy hibaüzenetet. Kell ehhez valami extra szerveroldali támogatás, vagy simán írjam meg, rakjam a honlapra és megyen?

Posted

Nem tudtam igazából eldönteni, hogy php vagy html gond! /ezért bocss, ha rossz helyre írtam!/

Honlapra jelszavas belépõt szeretnék készíteni. Van egy régi forrásanyag ami alapján elkészítettem, de sajnos nem nagyon akar mûködni. Segítségeteket szeretném kérni, hogy hol lehet a hiba?

 

4 db fil van a kovetkezõ tartalommal:

 

index.php

 

<?php

session_start();

unset($_SESSION['password']);

?>

<form method="post" action="vedett.php">

Jelszó : <input name="password" type="password" >

</br>

<input type="submit" value="Tovább">

</form>

 

 

 

vedett.php - ebbe csak a jelszavat kell beirni

 

<?php

session_start();

session_register('password');

$password = $_SESSION['password'];

if ( $password != 'zauber' ){

include 'rosszjelszo.html';

unset($_SESSION['password']);

}

else {

include 'vedett.html';

}

?>

 

vedett.html

 

<html>

Titokoldal

</html>

 

 

rosszjelszo.html

 

<html>

rossz a jelszavad!

</html>

 

---------- az index.php-ról eljut a vedett php.-ra, de onnan egyszerûen nem tud tovább menni /nem tudja leszelektálni, /hogy melyik oldalra lépjen tovább, vagy a vedett.html-re vagy a rosszjelszo.html-re!

Vagyis szerintem valami a vedett.php-ba van elírva. De lehet,hogy tévedek! :(

Posted
Beírja a felhasználónevet és a jelszót, a program végigszánt a szövegfájlon, és ha talál ilyen nevet és a jelszó is stimmel, kidobja a jegyekfájlt, egyéb esetben meg egy hibaüzenetet. Kell ehhez valami extra szerveroldali támogatás, vagy simán írjam meg, rakjam a honlapra és megyen?

 

Ha fájlokkal dolgozol, akkor nem kell hozzá semmi különös, csak a szervernek engednie kell a fájlkezelő függvények használatát a php-ben.

Posted

@zauber: Ez így nem fog menni. Ebbe a részbe a POST-al jutsz be.

 

<?php
session_start(); && indítasz egy session-t
session_register('password'); && újra létrehozod a password session változót (jelenleg üres)
$password = $_SESSION['password']; && a $password-be kimásolod azt, amit éppen tartalmaz a session password (üres)
if ( $password != 'zauber' ){ && egyenlő zauber-rel? Nem, mert üres, ezért az igaz ág fog lefutni.

De ennek semmi köze a post-ban kapott password változóhoz.

Ehhez amúgy sem kell a session, hiszen mindent megkapsz a $_POST tömbben.

 

index.php

 

<form method="post" action="vedett.php">
Jelszó : <input name="password" type="password" >
</br>
<input type="submit" value="Tovább">
</form>

 

vedett.php - ebbe csak a jelszavat kell beirni

 

<?php
$password = $_POST['password'];
if ( $_POST['password'] != 'zauber' ){
  include 'rosszjelszo.html';
}
else {
  include 'vedett.html';
}
?>

Persze csak akkor, ha nem használod máshol a password session változót.

És akkor is csak úgy, hogy elfelejted a session_register-t, mert csak akkor működik, ha a register_globals beállítás a php.ini-ben engedélyezett, különben nem. Helyette egyszerűen rendeld hozzá egy új elemhez az értéket a $_SESSION tömbben:

$_SESSION['password']=$password

Posted

Elakadtam...

 

Lenne egy jelszó ellenõrzõ függvény, ami jelszócserénél megvizsgálja a feltételeket, és ha minden rendben akkor mehet a jelszócsere, de ha gond van akkor nem írja át, és a megfelelõ hibaüzenetet adja.

a függvény ami egy külön fájlban van:

function good_password($oldpass, $pass1, $pass2){

    $oldpass=trim($_POST['oldpass']);
    $pass1=trim($_POST['pass1']);
    $pass2=trim($_POST['pass2']);
    
        if( $pass1 != $pass2 ){ 
            
              return $pw="A két jelszó nem egyezik!";  
          
            }else{ 
            
                if(md5($oldpass) != $_SESSION['cont']['password'] ){
                
                    return $pw="Hibás régi jelszót adott meg!";  
            
                }else{ 
            
                
            switch ($pass1)
            {
                case (strlen($pass1) < 8):
                    return $pw="Túl rövid jelszó!";
                    break;
                    
                case (!preg_match("/\d/", $pass1)):
                    return $pw="Hibás jelszó, nem tartalmaz számokat!";
                    break;
                    
                case (!preg_match("/[a-z]/i", $pass1)):
                    return $pw="Hibás jelszó, nem tartalmaz betûket!";
                    break;
                    
                default:
                    return true;
            }
                
        }
    
    }
    
}

 

És az a kód ami elvégzi a cserét:

$err="";

if((isset($_POST['pass1'])) AND (isset($_POST['pass2'])) AND (isset($_POST['oldpass']))){ 

    if ( good_password($_POST['oldpass'], $_POST['pass1'], $_POST['pass2'])){ 
        
        $pass1=trim($_POST['pass1']);
        $jelszo=md5($pass1);

        dbQuery("UPDATE admin SET password='".$jelszo."' WHERE id='".$_POST['id']."' ");
  
        $ok="<font color=\"red\">A jelszócsere megtörtént!</font>";
    
    }else{
    
        echo $pw;
    
    }
}

 

Na.. ha minden rendben az új jelszóval akkor jól is mûködik, de ha valamelyik feltételnek nem felel meg, akkor valami mást ír bele az adatbázisba. és nem adja a hibaüzenetet.

Posted

Ööö... mi a franc az, hogy

 

return $pw = "bármi"

??!?! Lehet, hogy szintaktikailag helyes, de mindennek ellentmond, ami a programozásban szent.

 

Az én változatom:

 

<?php
function good_password($oldpass, $pass1, $pass2)
{
    $oldpass=trim($_POST['oldpass']);
    $pass1=trim($_POST['pass1']);
    $pass2=trim($_POST['pass2']);

    $error = "";

    if( $pass1 != $pass2 ){
       $error = "A két jelszó nem egyezik!";  
    } elseif (md5($oldpass) != $_SESSION['cont']['password'] ) {
       $error = "Hibás régi jelszót adott meg!";  
    } else {
        switch ($pass1) {
            case (strlen($pass1) < 8):
                $error = "Túl rövid jelszó!";
                break;

            case (!preg_match("/\d/", $pass1)):
                $error = "Hibás jelszó, nem tartalmaz számokat!";
                break;

            case (!preg_match("/[a-z]/i", $pass1)):
                $error = "Hibás jelszó, nem tartalmaz betûket!";
                break;
        }
    }

    if ($error !== "") {
        return $error;
    } else {
        return "OK";
    }
}
?>

 

<?php
if ( (isset($_POST['pass1'])) && (isset($_POST['pass2'])) && (isset($_POST['oldpass'])) ) {
    $result = good_password($_POST['oldpass'], $_POST['pass1'], $_POST['pass2']);
    if ($result == "OK") {
        ...
    } else {
        echo $result;
    }
}
?>

Ez kizárt, hogy az igaz-ágba fusson, ha rossz a jelszó.

Posted

Látod ezért szép szakma ez :)

 

Amúgy azt szerettem volna elérni, hogy a megfelelõ hibaüzenetet adja vissza.

Posted

Bocs, így jó:

 

    if ($error !== "") {
        return $error;
    } else {
        return "OK";
    }

 

De egyszerûsítheted úgy is, hogy az elején rögtön OK-val inicializálod az $error-t és akkor nem is kell nézni a függvény végén, hogy mi a tartalma, elég csak egy return $error.

Posted

Nekem így lett jó a vége:

 

if ($error == "") {
        return "OK";
    } else {
        return $error;
    }

 

De ahogy látom ugyanaz. :)

 

Köszönöm, sokat segítettél. :)

Posted
include 'rosszjelszo.html';

Eddigi tudomásom szerint csak .php-t lehet include-olni, az olvastam egy oldanon.

:huh:

Posted

De nem. Bármit lehet, sőt, megfelelő szerverbeállítások mellett akár URL-t is!

Posted

Sziasztok!

 

Ismét hozzátok fordulnék egy kérdéssel. Egy ismerõs kapott egy másiktól egy már mûködõ félig-meddig saját fejlesztésû webshop motort, fel is szórta az õ tárhelyére, de nem mûködik. A rendszer -mint a webshopok nagy része- igencsak bonyolult, ráadásul szlovák minden kikommentezett rész, így nagyon lassan haladok a megértésével. Amíg én is gondolkozok, és próbálkozok, arra gondoltam megkérdem tõletek is.

A webshop tehát úgy mûködik, hogy a menüpontok nem egy-egy fájlra hivatkoznak (index.php, elso.php, masodik.php, stb.), hanem egy "mappára" (tehat hxxp://weblapcime.hu/arlista, hxxp://weblapcime.hu/termekek, stb.). Na most ilyen mappák nem léteznek, nyilván ezt php-vel oldják meg valamilyen "maszkolással". (Bocs a konyhanyelvért, ennyire még nem mélyültem el a php-ban, most tanulgatom.)

 

A gond az, hogy akármelyik menüpontra kattintunk, mindig a fõoldal jelenik meg. Arra már ráleltem, hogy azért, mert a .htacces-ben be lett állítva, hogy 404-es hiba esetén a fõoldal jelenjen meg. A kérdés csak az, hogy miért dobhatott 404-es hibát? Mivel rendszer elméletileg a teljes másolata a már mûködõ oldalnak, most zárjuk ki, hogy valami el lett írva a motorban, ez minden bizonnyal valami szerverváltozóval, vagy letiltott függvénnyel kapcsolatos lesz. Esetleg a .htaccess hiba.

 

Részlet a htaccess-bõl:

#php_flag allow_url_fopen On //ez be van kapcsolva a szerveren
#php_flag register_globals On
#php_flag session.use_cookies On

AddDefaultCharset WINDOWS-1250

RewriteEngine On 

RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ 
RewriteRule ^(.+[^/])$ /$1/ [R=301,QSA] 

RewriteRule ^home/?$ %{DOCUMENT_ROOT}/index.php?akcia=home&a=%{REQUEST_URI} [L,QSA] 
RewriteRule ^internetovy-obchod/?$ %{DOCUMENT_ROOT}/index.php?akcia=home&a=%{REQUEST_URI} [L,QSA] 
RewriteRule ^kategorie/?$ %{DOCUMENT_ROOT}/index.php?akcia=showkategoria&typpanell=kategoria&typpanelin=in&a=%{REQUEST_URI} [L,QSA] 
.
. ugyanilyen sorok tömkelege...majd
.
# Catch 404 errors
ErrorDocument 404 /index.php  

(A szerveren 5.2.11-es PHP fut.)

 

Köszönök elõre minden tippet!

Posted

A htaccess-t is lemásoltátok az eredetirõl? Szerintem abban van beállítva, hogy az ilyen URL-eket hogyan kell feldolgozni...

 

Sajnos (még) én sem nem értek a mod_rewrite-hoz, majd egyszer beleásom magam...

Posted

Abban szeretném a T. nagyérdemû segítségét kérni, hogy lenne 1 form amin bekérek 4 adatot, majd ezt a 4 adatot, illessze be egy Word vagy PDF dokumentumba és nyomtassa ki.

Igazából nem tudom hogyan kezdjek neki. (na jó a form-al tisztában vagyok)

Posted

Esetleg ezen az úton elindulhatsz:

<?php

$excelApp = new COM("Excel.Application") or die("Cannot create an Excel object");
$excelApp->Workbooks->Add();
$excelApp->Range("A1:C6")->Select();
$excelApp->ActiveCell->Formula = "Hello World!";
$excelApp->Visible = 1;

?>

Posted

Ennyi sokminden.

Meg nyilván a host alkalmzás, amit használni szeretnél, a fenti kód esetében egy Excel.

Posted

De egy Linux szerveren? Ott hogy lesz Excel?

Posted

Tippet jöttem kérni :upsz:

Szóval, van egy kis hírközlõm. Ebben be tudom állítani, hogy megjelenjen-e a bejegyzés az oldalmenyüben, és hogy az oldelmenü melyik kategóriájában. ilyen kis lenyitható fülecskében lehet kiváalsztani. Nade, ki szeretném írni az oldalmenüs kategóriát a hír aljára is. Szerintetek hogy kezdjem el? A redszer beírja a kiválasztott kategóriához a címet, és az oldalmenüben kiírja azokat. De ugye a hír alján a kategória nevét akarnám kiírni.

Egyenlõre nem találtam rá (könnyû) jó megoldást :(:)

Posted

naszóval....

Annyit változott a dolog, hogy adott egy pdf fájl, aminek a meghatározott részébe kellene beleírnom a formon beadott adatokat.

És fogalmam sincs hogyan csináljam.

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...